自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (4)
  • 收藏
  • 关注

原创 VC++6.0写动态库

网上的资源很多,但是我搜了一天看得头昏脑胀,对第一次接触动态库的新人来说太不友好了,所以在我终于弄懂了一丢丢的时候决定我也来写一个,希望能帮到一些朋友。首先动态库的作用大家可以去看其他人写的博客之类的,已经讲的很清楚了,我接触这个是因为我需要改进某个程序里的一小部分,但是由于某种原因不能把某个程序的代码全部拷出来,所以只能用动态库。我的理解就是进行封装,把不方便给别人看的代码部分封装起来,通过.dll和.lib文件让别人去调用进而在需要改进的部分上进行更改。用VC++6.0创建动态库也有好几种类型,

2020-08-21 15:23:49 1106

原创 sqrt和sqrtm在矩阵运算中的区别

sqrt是矩阵内每一个元素对应开平方,即H=[a,b;c,d],则sqrtm是矩阵开平方,即P=A*A,则sqrtm(P)=A例如:a=[1,4;9,16];sqtr(a)=[1,2;3,4];sqrtm(a)=[0.4662 + 0.9359i,0.8860 - 0.2189i;1.9935 - 0.4924i,3.7888 + 0.1152i]...

2020-03-30 10:28:01 7532

原创 C++的运算优先级和类型转换

2020-03-27 20:48:35 1091

原创 扩展卡尔曼滤波器(EKF)

线性卡尔曼滤波的算法采用递推的形式表示,其算法已被学者们研究得较为透彻。但是实际应用中非线性的现象是十分普遍的,例如:物理模型受到外部干扰、存在非线性性和病态方差矩阵等因素所引起的非线性问题都使得传统的KF算法以不再适用,迫切需要改进KF算法得到适用于非线性系统的卡尔曼滤波技术。假设所有的变换都是准线性的,先对连续的非线性方程进行线性化和离散化处理,利用一阶泰勒展开式来近似非线性模型,得到对应于非...

2020-03-27 10:16:31 5808

原创 matlab的videoinput函数

matlab的videoinput函数有三个重要的输入参数,分别是adaptorname、deviceID、format,如下图所示,其他参数可以有选择性的设置。deviceID如果不设置的话,系统会自动寻找第一个可用的图像采集设备并使用。如果计算机上安装了多个摄像头,那么就要设置它们的ID号。format是视频格式。除了deviceID,其他两个参数需要用‘’括起来。在不知道计算机里安装...

2020-03-26 15:51:29 7827 2

原创 matlab创建随机数(randn和rand和randi)

randn和rand和randirand生成均匀分布的伪随机数,分布在(0,1)之间,例如rand(m)生成m行m列的均匀分布的伪随机数,rand(m,n)生成m行n列的均匀分布的伪随机数,rand(m,n,’double’)生成指定精度的伪随机数,参数也可以为single;randn生成标准正态分布的伪随机数,均值为0,方差为1;randi生成均匀分布的伪随机整数,randi(ima...

2020-03-26 10:16:48 1260

原创 Matlab利用plot作图线形颜色等选择

例如:plot(x,y,'-ko','MarkerFaceColor','r'),表示黑色实线,红色圆圈数据点。plot(x,y,'-cd','MarkerFaceColor','g'),表示蓝绿色实线,绿色菱形数据点。

2020-03-23 16:39:29 8244

原创 引用形参、指针形参的使用

引用形参可以改变主函数内的实参值#include<iostream>using namespace std;int change1(int a,int b) //a、b为变量,不改变主函数内的实参值{ int c; c=a; a=b; b=c; return 0;}int change2(int &a,int &b) //a、b为引用{...

2020-02-23 21:47:21 892

原创 C++中的int*、int**、int&、int*&、int *a[]、int(*a)[]

技巧:先找到声明符a,被括号括着,先看括号内的(优先级高),然后向右看,有[]说明a是个数组,再向左看,有*说明是指针,有&说明是引用,再向左看,是int或者int *或者int &类型int a; //a是一个int型变量int *a; //a是一个指向int型变量的指针int **a; //a是一个指向一个指向int型变量指针的指针...

2020-02-23 21:32:34 2496 1

原创 C++指针的最简单应用

这里的代码给出了怎么去理解指针,指针指向的是数据的地址,二级指针指向的是指针的地更改指针的值不改变原数据,代码注释非常详细,能够比较容易理解指针的简单应用。#include<iostream>using namespace std;int main(){ int a=10; int b=100; int *p1=&a; //指针p1指向对象a int ...

2020-02-23 21:06:38 180 1

原创 巴特沃斯、切比雪夫、贝塞尔、椭圆滤波器的异同

在具有相同阶次的情况下巴特沃斯滤波器通带和阻带最平稳,但是阻带下降慢;切比雪夫滤波器通带等纹波,阻带平稳且下降较快;贝塞尔滤波器通带等纹波,阻带下降慢,幅频特性的选频特性差,但具有最佳的线性相位特性;椭圆滤波器通带和阻带等纹波,阻带下降最快,牺牲了阻带和通带的稳定性。...

2019-12-30 11:08:30 4640 1

原创 利用matlab对状态方程与传递函数转换

传递函数:在零初始条件下,线性定常系统输出象函数X0(s)与输入象函数Xi(s)之比,称为系统的传递函数,用G(s)表示。传递函数的概念只适用于线性定常系统。状态空间模型:系统的动态特性由状态变量构成的一阶微分方程组(状态空间表达式)来描述,能同时给出系统全部独立变量的响应,因而能同时确定系统发全部内部运动状态。状态空间模型即状态空间表达式,包括状态方程和输出方程,, ,A:系统矩阵...

2019-10-24 15:44:39 36938 4

原创 各种函数的求导

1、 ;2、 ;3、 ;4、 ;5、 ;6、 ;7、 ;8、 ;9、 ;10、 ;11、 ;12、 ;

2019-09-02 21:17:50 317

原创 matlab中各种数据类型及转换

数据类型:int和unit都是整型,只是前一个有符号,后一个没有符号,比如在16位系统中,int范围是-32768-32767,unit范围是0-65535;single和double都是浮点型,只是single最多可以显示小数点后7位,double最多可以显示小数点后14位;single变量存储大小位32位(4个字节),double变量存储大小为62位(8个字节);cell arra...

2019-07-02 16:03:57 44746

原创 matlab仿真平台式惯导

最近在学习平台式惯导,现在就其原理运用matlab的simulink进行仿真,具体的仿真文件已经上传了,大家有兴趣的可以下载去看看,静基座全阻尼惯导系统误差原理图如下所示:利用simulink仿真原理图如下所示:其中各参数以及水平阻尼和方位阻尼设计如下:利用simulink仿真,可以得到三个平台误差角和经纬度的误差图形。不过存在一个问题,就是通过这个系统仿真得到...

2019-07-02 10:09:07 3047 3

原创 UKF无迹卡尔曼滤波

UKF无迹卡尔曼滤波是在卡尔曼滤波和变换的基础上发展而来的,它是利用无损变换使线性假设下的卡尔曼滤波应用于非线性系统。UT变换是用固定数量的参数去近似一个高斯分布,其实现原理为:在原先分布中按某一规则取一些点,使这些点的均值和协方差与原状态分布的均值和协方差相等;将这些点代入非线性函数中,相应得到非线性函数值点集,通过这些点集可求取变换的均值和协方差。对任何一种非线性系统,当高斯型状态微量经由...

2019-06-22 10:57:13 29432 4

原创 状态方程离散化

由于使用卡尔曼滤波需要离散化的系统状态方程,即系统方程和量测方程都需要是离散型的,而在实际的物理系统中我们得到的是连续系统的状态方程,动力学特性用连续微分方程描述,所以对它们需要进行离散化处理。在这里我就不放离散化的具体推导,毕竟很多人也只是用这个公式,而不必去真正了解过程,能用就可以了。如果有大佬想了解具体推导过程,可以去看看秦永元等主编的《卡尔曼滤波与组合导航原理》,里面介绍的还是很详细的。...

2019-06-10 14:18:25 16068 1

原创 卡尔曼滤波器知识整理

首先,简要介绍下什么是卡尔曼滤波器:60年代初,Kalman和Bucy最先提出基于状态空间的递推滤波算法,即卡尔曼滤波算法。卡尔曼滤波器是一种自回归滤波器,建立在信号和噪声的状态空间描述基础上,要求系统状态方程和量测方程都是线性方程,系统噪声和观测噪声均为高斯白噪声且不相关,在统计特性已知的条件下,是对动态系统未知状态进行线性最小方差无偏最优估计的一种递推算法。能够通过一系列不完全和包含噪声的...

2019-06-04 15:29:19 8209 1

原创 角频率、圆周频率、归一化频率的区别

实际物理频率f:表示AD采集物理信号的频率,fs为采样频率,由奈奎斯特采样定理可以知道,fs必须≥信号最高频率的2倍才不会发生信号混叠,因此fs能采样到的信号最高频率为fs/2。角频率(角速度)Ω:是实际物理频率f的2*pi倍,这个也称模拟频率,单位rad/s。Ω=2pi*f=2pi/T,T=1/f=2pi/Ω归一化频率:是将物理频率f按fs归一化之后的结果,最高的信号频率...

2019-06-03 21:33:34 9698

原创 排序系列七:计数排序

计数排序应该是所有排序方法里面最简单的了,代码也很简单易懂//计数排序是一个非基于比较的排序算法,优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),//快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序//基本思想是对于给定序列中的每一个元素x,确定该序列中值小于x的...

2019-05-30 14:17:37 93

原创 排序系列六:归并排序

这个排序有点费脑子,大家还得花时间好好看看归并排序原理如下图所示:代码如下://归并排序(mergesort):建立在归并操作上的采用分治法的一种有效的排序算法,将已有序的子序列合并,得到完全有序的序列;//即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。//一般来说从单个元素开始合并,逐渐合并成大的元素,最终,达到整个元素有序的目的。...

2019-05-29 21:50:57 217

原创 排序系列五:堆排序

上代码咯//堆排序指利用堆这种数据结构所设计的一种排序算法。至于堆,大家可以先去百度一下堆是个什么东西,我这里主要放大家最需要的代码hhh//堆是一个近似完全二叉树的结构,分为“最大堆or大根堆or大顶堆”(根节点值大)和“最小堆”。通常最大堆用来升序,最小堆用来降序//以升序为例,就是把待排序的一堆无序的数a[n],整理成一个大根堆。一般从最后一个非叶子结点开始(此结点为n/2-1),...

2019-05-29 15:11:06 123

原创 排序系列四:快速排序

代码如下://快速排序(quicksort):首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它左边,//所有比它大的数都放到它右边,这个过程称为一趟快速排序。#include <iostream>void quicksort(int a[],int left,int right){ int p=left; int t=a[le...

2019-05-28 23:14:05 109

原创 排序系列三:插入排序&希尔排序

具体见代码://插入排序(insertionsort)的原理是从左往右一个个数字做为值插入左边已从小到大排好序的数字之中,即每次插入的值都与左边的值从左向右进行比较//当遇到比其大的值时就可以停止此次插入,进行下次插入。//按需要比较的最多的次数,应该是(n^2-n)/2次,在n很大时相当于n^2,故O(n^2)#include<iostream>int main()...

2019-05-28 11:51:49 134

原创 排序系列二:选择排序

不多说,直接放代码选择排序(Selection sort)工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。一共需要比较(n^2-n)/2次,在n很大时相当于n^2,故O(n^2)。选择排序的比较次数是最多的,为什么还会有选择排序呢?因为它...

2019-05-28 11:47:29 86

原创 排序系列一:冒泡排序以及改进

最近想要重新学学C++的算法,就从排序开始搞了。接下来会更新各种排序的代码,代码绝对是可以成功运行的,直接复制粘贴就OK,欢迎大家关注。第一篇肯定就是冒泡排序(bubblesort)了,注释可以说是很详细了,特别适合初学者。//冒泡排序原理为相邻两个数互相比较,然后将较大的数放在右边,然后继续向右进行比较,最后把最大的数放在整组数的最右边//然后循环,再将前n-1个数继续上面的排序,最...

2019-05-28 11:36:10 179

原创 数组指针的使用

在看C++ Primer的时候感觉数组指针和指针数组有点意思,在这里就稍微写一下,//int *a[10] :指针数组,数组a里存放的是10个int型指针:先找到声明符a,然后向右看,有[]说明a是个数组,再向左看,是int *,说明数组中的每个元素是int *。所以这是一个存放int指针的数组。//int (*a)[10] :a是数组指针,指向一个数组,此数组有10个int型元素:先找到...

2019-05-27 09:44:52 344

原创 高斯列主元消去法解线性方程组

最近在看惯导的东西,然后想要用C++解惯导控制方程,然后就重头把C++解方程组这方面的知识回顾了一下,首先就是高斯列主元消去法,这个方法还算实用,这里以3*3的矩阵为例,里面注释很详细,各位小白可以参考参考hhh//顺序高斯消去法求线性方程组的解 AX=B,A为系数矩阵,B为常向量矩阵,X为矩阵的解//为了减小误差,采用列主元消去法,从第k列的a[k][k]及其以下的各元素中选取绝对值最...

2019-05-26 22:00:02 4094

卡尔曼滤波用于GPS导航代码实现

卡尔曼滤波用于GPS导航,状态变量为目标真实位置和速度(不考虑垂直方向即高度,只有东向和北向),观测变量为目标真实位置

2020-03-31

UKF无迹卡尔曼滤波器代码实现

以匀速直线运动为例,设计了基于距离的目标跟踪算法,即状态量为X、Y轴的位置和速度,观测值为物体到观测站的距离,具体实现过程见代码

2020-03-31

EKF扩展卡尔曼滤波器代码实现

以匀速直线运动为例,设计了基于距离的目标跟踪算法,即状态量为X、Y轴的位置和速度,观测值为物体到观测站的距离,具体实现过程见代码

2020-03-31

内全阻尼平台式惯导仿真.slx

利用matlab的simulink进行内全阻尼的平台式惯导仿真~

2019-07-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除