转自:https://blog.csdn.net/zhangquan2015/article/details/79264540
卡尔曼滤波应用及其matlab实现
Github个人博客:https://joeyos.github.io
线性卡尔曼滤波
卡尔曼滤波在温度测量中的应用
X(k)=AX(k-1)+TW(k-1)
Z(k)=H*X(k)+V(k)
房间温度在25摄氏度左右,测量误差为正负0.5摄氏度,方差0.25,R=0.25。Q=0.01,A=1,T=1,H=1。
假定快时刻的温度值、测量值为23.9摄氏度,房间真实温度为24摄氏度,温度计在该时刻测量值为24.5摄氏度,偏差为0.4摄氏度。利用k-1时刻温度值测量第k时刻的温度,其预计偏差为:
P(k|k-1)=P(k-1)+Q=0.02
卡尔曼增益k=P(k|k-1) / (P(k|k-1) + R)=0.0741
X(k)=23.9+0.0741*(24.1-23.9)=23.915摄氏度。
k时刻的偏差为P(k)=(1-K*H)P(k|k-1)=0.0186。
最后由X(k)和P(k)得出Z(k+1)。
matlab实现为:
% 程序说明:Kalman滤波用于温度测量的实例
function main
N=120;
CON=25;%房间温度在25摄氏度左右
Xexpect=CON*ones(1,N);
X=zeros(1,N);
Xkf=zeros(1,N);
Z=zeros(1,N);
P=zeros(1,N);
X(1)=25.1;
P(1)=0.01;
Z(1)=24.9;
Xkf(1)=Z(1);
Q=0.01;%W(k)的方差
R=0.25;%V(k)的方差
W=sqrt(Q)*randn(1,N);
V=sqrt(R)*randn(1,N);
F=1;
G=1;
H=1;
I=eye(1);
%%%%%%%%%%%%%%%%%%%%%%%
for k=2:N
X(k)=F*X(k-1)+G*W(k-1);
Z(k)=H*X(k)+V(k);
X_pre=F*Xkf(k-1);
P_pre=F*P(k-1)*F'+Q;
Kg=P_pre*inv(H*P_pre*H'+R);
e=Z(k)-H*X_pre;
Xkf(k)=X_pre+Kg*e;
P(k)=(I-Kg*H)*P_pre;
end
%%%%%%%%%%%%%%%%
Err_Messure=zeros(1,N);
Err_Kalman=zeros(1,N);
for k=1:N
Err_Messure(k)=abs(Z(k)-X(k));
Err_Kalman(k)=abs(Xkf(k)-X(k));
end
t=1:N;
figure('Name','Kalman Filter Simulation','NumberTitle','off');
plot(t,Xexpect,'-b',t,X,'-r',t,Z,'-k',t,Xkf,'-g');
legend('expected','real','measure','kalman extimate');
xlabel('sample time');
ylabel('temperature');
title('Kalman Filter Simulation');
figure('Name','Error Analysis','NumberTitle','off');
plot(t,Err_Messure,'-b',t,Err_Kalman,'-k');
legend('messure error','kalman error');
xlabel('sample time');
%%%%%%%%%%%%%%%%%%%%%%%%%
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
卡尔曼滤波在自由落体运动目标跟踪中的应用
%%%%%%%%%%%%%
% 卡尔曼滤波用于自由落体运动目标跟踪问题
%%%%%%%%%%%%%%
function main
N=1000; %仿真时间,时间序列总数
%噪声
Q=[0,0;0,0];%过程噪声方差为0,即下落过程忽略空气阻力
R=1; %观测噪声方差
W=sqrt(Q)*randn(2,N);%既然Q为0,即W=0
V=sqrt(R)*randn(1,N);%测量噪声V(k)
%系数矩阵
A=[1,1;0,1];%状态转移矩阵
B=[0.5;1];%控制量
U=-1;
H=[1,0];%观测矩阵
%初始化
X=zeros(2,N);%物体真实状态
X(:,1)=[95;1];%初始位移和速度
P0=[10,0;0,1];%初始误差
Z=zeros(1,N);
Z(1)=H*X(:,1);%初始观测值
Xkf=zeros(2,N);%卡尔曼估计状态初始化
Xkf(:,1)=X(:,1);
err_P=zeros(N,2);
err_P(1,1)=P0(1,1);
err_P(1,2)=P0(2,2);
I=eye(2); %二维系统
%%%%%%%%%%%%%
for k=2:N
%物体下落,受状态方程的驱动
X(:,k)=A*X(:,k-1)+B*U+W(k);
%位移传感器对目标进行观测
Z(k)=H*X(:,k)+V(k);
%卡尔曼滤波
X_pre=A*Xkf(:,k-1)+B*U;%状态预测
P_pre=A*P0*A'+Q;%协方差预测
Kg=P_pre*H'*inv(H*P_pre*H'+R);%计算卡尔曼增益
Xkf(:,k)=X_pre+Kg*(Z(k)-H*X_pre);%状态更新
P0=(I-Kg*H)*P_pre;%方差更新
%误差均方值
err_P(k,1)=P0(1,1);
err_P(k,2)=P0(2,2);
end
%误差计算
messure_err_x=zeros(1,N);%位移的测量误差
kalman_err_x=zeros(1,N);%卡尔曼估计的位移与真实位移之间的偏差
kalman_err_v=zeros(1,N);%卡尔曼估计的速度与真实速度之间的偏差
for k=1:N
messure_err_x(k)=Z(k)-X(1,k);
kalman_err_x(k)=Xkf(1,k)-X(1,k);
kalman_err_v(k)=Xkf(2,k)-X(2,k);
end
%%%%%%%%%%%%%%%
%画图输出
%噪声图
figure
plot(V);
title('messure noise')
%位置偏差
figure
hold on,box on;
plot(messure_err_x,'-r.');%测量的位移误差
plot(kalman_err_x,'-g.');%卡尔曼估计位置误差
legend('测量误差','kalman估计误差')
figureplot(kalman_err_v);
title('速度误差')
figure
plot(err_P(:,1));
title('位移误差均方值')
figure
plot(err_P(:,1));
title('速度误差均方值')
%%%%%%%%%%%%%%%%%%%%%%%
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
卡尔曼滤波在船舶GPS导航定位
% Kalman滤波在船舶GPS导航定位系统中的应用
function main
clc;clear;
T=1;%雷达扫描周期
N=80/T;%总的采样次数
X=zeros(4,N);%目标真实位置、速度
X(:,1)=[-100,2,200,20];%目标初始位置、速度
Z=zeros(2,N);%传感器对位置的观测
Z(:,1)=[X(1,1),X(3,1)];%观测初始化
delta_w=1e-2;%如果增大这个参数,目标真实轨迹就是曲线
Q=delta_w*diag([0.5,1,0.5,1]) ;%过程噪声均值
R=100*eye(2);%观测噪声均值
F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];%状态转移矩阵
H=[1,0,0,0;0,0,1,0];%观测矩阵
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for t=2:N
X(:,t)=F*X(:,t-1)+sqrtm(Q)*randn(4,1);%目标真实轨迹
Z(:,t)=H*X(:,t)+sqrtm(R)*randn(2,1); %对目标观测
end
%卡尔曼滤波
Xkf=zeros(4,N);
Xkf(:,1)=X(:,1);%卡尔曼滤波状态初始化
P0=eye(4);%协方差阵初始化
for i=2:N
Xn=F*Xkf(:,i-1);%预测
P1=F*P0*F'+Q;%预测误差协方差
K=P1*H'*inv(H*P1*H'+R);%增益
Xkf(:,i)=Xn+K*(Z(:,i)-H*Xn);%状态更新
P0=(eye(4)-K*H)*P1;%滤波误差协方差更新
end
%误差更新
for i=1:N
Err_Observation(i)=RMS(X(:,i),Z(:,i));%滤波前的误差
Err_KalmanFilter(i)=RMS(X(:,i),Xkf(:,i));%滤波后的误差
end
%画图
figure
hold on;box on;
plot(X(1,:),X(3,:),'-k');%真实轨迹
plot(Z(1,:),Z(2,:),'-b.');%观测轨迹
plot(Xkf(1,:),Xkf(3,:),'-r+');%卡尔曼滤波轨迹
legend('真实轨迹','观测轨迹','滤波轨迹')
figure
hold on; box on;
plot(Err_Observation,'-ko','MarkerFace','g')
plot(Err_KalmanFilter,'-ks','MarkerFace','r')
legend('滤波前误差','滤波后误差')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%计算欧式距离子函数
function dist=RMS(X1,X2);
if length(X2)<=2
dist=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(2))^2 );
else
dist=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(3))^2 );
end
%%%%%%%%%%%%%%%%%%%%%%%%
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
卡尔曼滤波在视频目标跟踪中的应用
帧间差法目标检测
% 目标检测函数,这个函数主要完成将目标从背景中提取出来
function detect
clear,clc;
%计算背景图片数目
Imzero = zeros(240,320,3);
for i = 1:5
%将图像文件读入矩阵Im
Im{i} = double(imread(['DATA/',int2str(i),'.jpg']));
Imzero = Im{i}+Imzero;
end
Imback = Imzero/5;
[MR,MC,Dim] = size(Imback);
%遍历所有图片
for i = 1 : 60
%读取所有帧
Im = (imread(['DATA/',int2str(i), '.jpg']));
imshow(Im); %显示图像Im,图像对比度低
Imwork = double(Im);
%检测目标
[cc(i),cr(i),radius,flag] = extractball(Imwork,Imback,i);
if flag==0 %没检测到目标,继续下一帧图像
continue
end
hold on
for c = -0.9*radius: radius/20 : 0.9*radius
r = sqrt(radius^2-c^2);
plot(cc(i)+c,cr(i)+r,'g.')
plot(cc(i)+c,cr(i)-r,'g.')
end
pause(0.02)
end
%目标中心的位置,也就是目标的x,y坐标
figure
plot(cr,'-g*')
hold on
plot(cc,'-r*')
% 提取目标区域的中心和能包含目标的最大半径
function [cc,cr,radius,flag]=extractball(Imwork,Imback,index)
%初始化目标区域中心的坐标,半径
cc = 0;
cr = 0;
radius = 0;
flag = 0;
[MR,MC,Dim] = size(Imback);
%除去背景,找到最大的不同区域,即目标区域
fore = zeros(MR,MC);
%背景相减,得到目标
fore = (abs(Imwork(:,:,1)-Imback(:,:,1)) > 10) …
| (abs(Imwork(:,:,2) - Imback(:,:,2)) > 10) …
| (abs(Imwork(:,:,3) - Imback(:,:,3)) > 10);
%图像腐蚀,除去微小的白噪声点
%bwmorph该函数的功能是:提取二进制图像的轮廓
foremm = bwmorph(fore,‘erode’,2);%“2”为次数
%选取最大的目标
labeled = bwlabel(foremm,4);%黑背景中甄别有多少白块块,4-连通
%labeled是标记矩阵,图像分割后对不同的区域进行不同的标记
stats = regionprops(labeled,[‘basic’]);
[N,W] = size(stats);
if N < 1
return%一个目标区域也没检测到就返回
end
%在N个区域中,冒泡算法排序
id = zeros(N);
for i = 1 : N
id(i) = i;
end
for i = 1 : N-1
for j = i+1 : N
if stats(i).Area < stats(j).Area
tmp = stats(i);
stats(i) = stats(j);
stats(j) = tmp;
tmp = id(i);
id(i) = id(j);
id(j) = tmp;
end
end
end
%确保至少有一个较大的区域(最大区域面积要大于100)
if stats(1).Area < 100
return
end
selected = (labeled==id(1));
%计算最大区域的中心和半径
centroid = stats(1).Centroid;
radius = sqrt(stats(1).Area/pi);
cc = centroid(1);
cr = centroid(2);
flag = 1;
return
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
视频目标跟踪
% kalman滤波用户检测视频中的目标,并对目标跟踪
function kalman_for_vedio_tracking
clear,clc
% 计算图像背景
Imzero = zeros(240,320,3);
for i = 1:5
Im{i} = double(imread(['DATA/',int2str(i),'.jpg']));
Imzero = Im{i}+Imzero;
end
Imback = Imzero/5;
[MR,MC,Dim] = size(Imback);
% Kalman 滤波器初始化
R=[[0.2845,0.0045]’,[0.0045,0.0455]’];
H=[[1,0]’,[0,1]’,[0,0]’,[0,0]’];
Q=0.01eye(4);
P = 100eye(4);
dt=1; % 采样时间,也就是图像帧时间
A=[[1,0,0,0]’,[0,1,0,0]’,[dt,0,1,0]’,[0,dt,0,1]’];
g = 6; % pixels^2/time step
Bu = [0,0,0,g]’;
kfinit=0; % kalman增益初始化
x=zeros(100,4); % 目标状态初始化
% 检测视频中每一帧图像
for i = 1 : 60
% 读取图像
Im = (imread([‘DATA/’,int2str(i), ‘.jpg’]));
imshow(Im)
imshow(Im)
Imwork = double(Im);
% 检测目标(目标是一个球)
[cc(i),cr(i),radius,flag] = extractball(Imwork,Imback,i);
if flag==0
continue
end
hold on
for c = -1radius: radius/20 : 1radius
r = sqrt(radius2-c2);
plot(cc(i)+c,cr(i)+r,‘g.’)
plot(cc(i)+c,cr(i)-r,‘g.’)
end
% Kalman update
i
if kfinit==0
xp = [MC/2,MR/2,0,0]’
else
xp=Ax(i-1,:)’ + Bu
end
kfinit=1;
PP = APA’ + Q
K = PPH’inv(HPPH’+R)
x(i,:) = (xp + K([cc(i),cr(i)]’ - Hxp))’;
x(i,:)
[cc(i),cr(i)]
P = (eye(4)-KH)*PP
hold on
for c = -1radius: radius/20 : 1radius
r = sqrt(radius2-c2);
plot(x(i,1)+c,x(i,2)+r,‘r.’)
plot(x(i,1)+c,x(i,2)-r,‘r.’)
end
pause(0.3)
end
% show positions
figure
plot(cc,‘r*’)
hold on
plot(cr,‘g*’)
%end
%estimate image noise ® from stationary ball
posn = [cc(55:60)’,cr(55:60)’];
mp = mean(posn);
diffp = posn - ones(6,1)*mp;
Rnew = (diffp’*diffp)/5;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 提取目标区域的中心和能包含目标的最大半径
function [cc,cr,radius,flag]=extractball(Imwork,Imback,index)
cc = 0;
cr = 0;
radius = 0;
flag = 0;
[MR,MC,Dim] = size(Imback);
fore = zeros(MR,MC);
fore = (abs(Imwork(:,:,1)-Imback(:,:,1)) > 10) …
| (abs(Imwork(:,:,2) - Imback(:,:,2)) > 10) …
| (abs(Imwork(:,:,3) - Imback(:,:,3)) > 10);
foremm = bwmorph(fore,‘erode’,2);
labeled = bwlabel(foremm,4);
stats = regionprops(labeled,[‘basic’]);
[N,W] = size(stats);
if N < 1
return
end
id = zeros(N);
for i = 1 : N
id(i) = i;
end
for i = 1 : N-1
for j = i+1 : N
if stats(i).Area < stats(j).Area
tmp = stats(i);
stats(i) = stats(j);
stats(j) = tmp;
tmp = id(i);
id(i) = id(j);
id(j) = tmp;
end
end
end
if stats(1).Area < 100
return
end
selected = (labeled==id(1));
centroid = stats(1).Centroid;
radius = sqrt(stats(1).Area/pi);
cc = centroid(1);
cr = centroid(2);
flag = 1;
return
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
扩展卡尔曼滤波
对于非线性系统滤波问题,常用的处理方法是利用线性化技巧将其转化为一个近似的线性滤波问题,其中应用最广泛的方法是扩展卡尔曼滤波(EKF)。扩展卡尔曼滤波建立在线性卡尔曼滤波的基础之上。其核心思想是,对一般的非线性系统,首先围绕滤波值Xk将非线性函数f和h展开成泰勒级数并略去二阶及以上项,得到一个近似的线性化模型,然后应用卡尔曼滤波完成对目标的滤波估计等处理。
EKF的优点是不必预先计算标称轨迹,过程噪声W(k)和观测噪声V(k)均为0,时非线性方程的解,但它只能在滤波误差及一步预测误差较小时才能使用。
简单非线性系统的扩展卡尔曼滤波器
% 函数功能:标量非线性系统扩展Kalman滤波问题
% 状态函数:X(k+1)=0.5X(k)+2.5X(k)/(1+X(k)^2)+8cos(1.2k) +w(k)
% 观测方程:Z(k)=X(k)^2/20 +v(k)
function EKF_for_One_Div_UnLine_System
T=50;%总时间
Q=10;%Q的值改变,观察不同Q值时滤波结果
R=1;%测量噪声
%产生过程噪声
w=sqrt(Q)*randn(1,T);
%产生观测噪声
v=sqrt(R)*randn(1,T);
%状态方程
x=zeros(1,T);
x(1)=0.1;
y=zeros(1,T);
y(1)=x(1)^2/20+v(1);
for k=2:T
x(k)=0.5*x(k-1)+2.5*x(k-1)/(1+x(k-1)^2)+8*cos(1.2*k)+w(k-1);
y(k)=x(k)^2/20+v(k);
end
%EKF滤波算法
Xekf=zeros(1,T);
Xekf(1)=x(1);
Yekf=zeros(1,T);
Yekf(1)=y(1);
P0=eye(1);
for k=2:T
%状态预测
Xn=0.5*Xekf(k-1)+2.5*Xekf(k-1)/(1+Xekf(k-1)^2)+8*cos(1.2*k);
%观测预测
Zn=Xn^2/20;
%求状态矩阵F
F=0.5+2.5 *(1-Xn^2)/(1+Xn^2)^2;
%求观测矩阵
H=Xn/10;
%协方差预测
P=F*P0*F'+Q;
%求卡尔曼增益
K=P*H'*inv(H*P*H'+R);
%状态更新
Xekf(k)=Xn+K*(y(k)-Zn);
%协方差阵更新
P0=(eye(1)-K*H)*P;
end
%误差分析
Xstd=zeros(1,T);
for k=1:T
Xstd(k)=abs( Xekf(k)-x(k) );
end
%画图
figure
hold on;box on;
plot(x,'-ko','MarkerFace','g');
plot(Xekf,'-ks','MarkerFace','b');
%误差分析
figure
hold on;box on;
plot(Xstd,'-ko','MarkerFace','g');
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
真实值与估计值对比:
滤波误差:
EKF在目标跟踪中的应用
基于距离的目标跟踪算法Matlab程序
% 扩展Kalman滤波在目标跟踪中的应用
function EKF_For_TargetTracking
clc;clear;
T=1;%雷达扫描周期
N=60/T;%总的采样次数
X=zeros(4,N);%目标初始位置、速度
X(:,1)=[-100,2,200,20];%目标初始位置、速度
Z=zeros(1,N);%传感器对位置的观测
delta_w=1e-3;%如果增大这个参数,目标真实轨迹就是曲线
Q=delta_w*diag([0.5,1]);%过程噪声方差
G=[T^2/2,0;T,0;0,T^2/2;0,T];%过程噪声驱动矩阵
R=5;%观测噪声方差
F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];%状态转移矩阵
x0=200;%观测站的位置,可以设为其他值
y0=300;
Xstation=[x0,y0];
for t=2:N
X(:,t)=F*X(:,t-1)+G*sqrtm(Q)*randn(2,1);%目标真实轨迹
end
for t=1:N
Z(t)=Dist(X(:,t),Xstation)+sqrtm(R)*randn;%对目标观测
end
%EKF滤波
Xekf=zeros(4,N);
Xekf(:,1)=X(:,1);%卡尔曼滤波状态初始化
P0=eye(4);%协方差阵初始化
for i=2:N
Xn=F*Xekf(:,i-1);%预测
P1=F*P0*F'+G*Q*G';%预测误差协方差
dd=Dist(Xn,Xstation);%观测预测
%求雅克比矩阵H
H=[(Xn(1,1)-x0)/dd,0,(Xn(3,1)-y0)/dd,0];%即为所求一阶近似
K=P1*H'*inv(H*P1*H'+R);%增益
Xekf(:,i)=Xn+K*(Z(:,i)-dd);%状态更新
P0=(eye(4)-K*H)*P1;%滤波误差协方差更新
end
%误差分析
for i=1:N
Err_KalmanFilter(i)=Dist(X(:,i),Xekf(:,i));%滤波后的误差
end
%画图
figure
hold on;box on;
plot(X(1,:),X(3,:),'-k.');%真实轨迹
plot(Xekf(1,:),Xekf(3,:),'-r+');%扩展卡尔曼滤波轨迹
legend('真实轨迹','EKF轨迹')
figure
hold on; box on;
plot(Err_KalmanFilter,'-ks','MarkerFace','r')
%子函数,求两点间的距离
function d=Dist(X1,X2);
if length(X2)<=2
d=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(2))^2 );
else
d=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(3))^2 );
end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
基于EKF的纯方位目标跟踪算法
% 扩展Kalman滤波在纯方位目标跟踪中的应用实例
function EKF_angle
clc;clear;
T=1;%雷达扫描周期
N=40/T;%总的采样次数
X=zeros(4,N);%目标真实位置、速度
X(:,1)=[0,2,1400,-10];%目标初始位置、速度
Z=zeros(1,N); %传感器对位置的观测
delta_w=1e-4;%如果增大这个参数,目标真实轨迹就是曲线了
Q=delta_w*diag([1,1]) ;%过程噪声均值
G=[T^2/2,0;T,0;0,T^2/2;0,T];%过程噪声驱动矩阵
R=0.1*pi/180;%观测噪声方差
F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];%状态转移矩阵
x0=0;%观测站的位置,可以设为其他值
y0=1000;
Xstation=[x0;y0];
w=sqrtm®randn(1,N);%均值为0,方差为1的高斯噪声
for t=2:N
X(:,t)=FX(:,t-1)+Gsqrtm(Q)randn(2,1);%目标真实轨迹
end
for t=1:N
Z(t)=hfun(X(:,t),Xstation)+w(t);%目标观测
%对sqrtm®w(t)转化为角度sqrtm®w(t)/pi180可以看出噪声的大小
end
%EKF滤波
Xekf=zeros(4,N);
Xekf(:,1)=X(:,1);%卡尔曼滤波状态初始化
P0=eye(4);%协方差阵初始化
for i=2:N
Xn=FXekf(:,i-1);%预测
P1=FP0F’+GQG’;%预测误差协方差
dd=hfun(Xn,Xstation);%观测预测
%求雅克比矩阵H
D=Dist(Xn,Xstation);
H=[-(Xn(3,1)-y0)/D,0,(Xn(1,1)-x0)/D,0];%即为所求一阶近似
K=P1H’inv(HP1H’+R);%增益
Xekf(:,i)=Xn+K*(Z(:,i)-dd);%状态更新
P0=(eye(4)-KH)P1;%滤波误差协方差更新
end
%误差分析
for i=1:N
Err_KalmanFilter(i)=sqrt(Dist(X(:,i),Xekf(:,i)));
end
%画图
figure
hold on;box on;
plot(X(1,:),X(3,:),’-k.’);%真实轨迹
plot(Xekf(1,:),Xekf(3,:),’-r+’);%扩展卡尔曼滤波轨迹
legend(‘真实轨迹’,‘EKF轨迹’)
figure
hold on; box on;
plot(Err_KalmanFilter,’-ks’,‘MarkerFace’,‘r’)
figure
hold on;box on;
plot(Z/pi180,’-r.’,‘MarkerFace’,‘r’);%真实角度值
plot(Z/pi180+w/pi180,’-ko’,‘MarkerFace’,‘g’);%受噪声污染的观测值
legend(‘真实角度’,‘观测角度’);
function cita=hfun(X1,X0) %需要注意各个象限角度的变化
if X1(3,1)-X0(2,1)>=0
if X1(1,1)-X0(1,1)>0
cita=atan(abs( (X1(3,1)-X0(2,1))/(X1(1,1)-X0(1,1)) ));
elseif X1(1,1)-X0(1,1)==0
cita=pi/2;
else
cita=pi/2+atan(abs( (X1(3,1)-X0(2,1))/(X1(1,1)-X0(1,1)) ));
end
else
if X1(1,1)-X0(1,1)>0
cita=3pi/2+atan(abs( (X1(3,1)-X0(2,1))/(X1(1,1)-X0(1,1)) ));
elseif X1(1,1)-X0(1,1)==0
cita=3*pi/2;
else
cita=pi+atan(abs( (X1(3,1)-X0(2,1))/(X1(1,1)-X0(1,1)) ));
end
end
function d=Dist(X1,X2);
if length(X2)<=2
d=( (X1(1)-X2(1))^2 + (X1(3)-X2(2))^2 );
else
d=( (X1(1)-X2(1))^2 + (X1(3)-X2(3))^2 );
end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
跟踪轨迹
跟踪误差RMS
观测值和真实值的对比
EKF在三维纯方位寻的导弹制导中的应用
% 程序说明:目标跟踪程序,实现运动弹头对运动物体的三维跟踪,主函数 % 状态方程: x(t)=Ax(t-1)+Bu(t-1)+w(t) function main delta_t=0.01;%测量周期,采样周期 longa=10000;%机动时间常数的倒数,即机动频率 tf=3.7; T=tf/delta_t;%时间长度3.7s,一共采样T=370次 %状态转移矩阵F F=[eye(3),delta_t*eye(3),(exp(-1*longa*delta_t)+... longa*delta_t-1)/longa^2*eye(3); zeros(3),eye(3),(1-exp(-1*longa*delta_t))/longa*eye(3); zeros(3),zeros(3),exp(-1*longa*delta_t)*eye(3)]; %控制量驱动矩阵gama G=[-1*0.5*delta_t^2*eye(3);-1*delta_t*eye(3);zeros(3)]; N=3; %导航比(制导率) for i=1:50 %做50次蒙特卡洛仿真 x=zeros(9,T); x(:,1)=[3500,1500,1000,-1100,-150,-50,0,0,0]';%初始状态X(0) ex=zeros(9,T); ex(:,1)=[3000,1200,960,-800,-100,-100,0,0,0]';%滤波器状态Xekf(0) cigema=sqrt(0.1); w=[zeros(6,T);cigema*randn(3,T)];%过程噪声 Q=[zeros(6),zeros(6,3);zeros(3,6),cigema^2*eye(3)]; z=zeros(2,T);%观测值 z(:,1)=[atan( x(2,1)/sqrt(x(1,1)^2+x(3,1)^2) ), atan(-1*x(3,1)/x(1,1))]'; v=zeros(2,T);%观测噪声 for k=2:T-3 tgo=tf-k*0.01+0.0000000000000001; c1=N/tgo^2;%制导率的系数 c2=N/tgo;%制导率的系数 c3=N*(exp(-longa*tgo)+longa*tgo-1)/(longa*tgo)^2;%制导率的系数 %X、Y、Z三个方向的导弹加速度 u(1,k-1)=[c1,c2,c3]*[x(1,k-1),x(4,k-1),x(7,k-1)]'; u(2,k-1)=[c1,c2,c3]*[x(2,k-1),x(5,k-1),x(8,k-1)]'; u(3,k-1)=[c1,c2,c3]*[x(3,k-1),x(6,k-1),x(9,k-1)]'; x(:,k)=F*x(:,k-1)+G*u(:,k-1)+w(:,k-1);%目标状态方程 d=sqrt(x(1,k)^2+x(2,k)^2+x(3,k)^2); D=[d,0;0,d]; R=inv(D)*0.1*eye(2)*inv(D)';%观测噪声方差 v(:,k)=sqrtm(R)*randn(2,1);%观测噪声模拟 %目标观测方程 z(:,k)=[atan( x(2,k)/sqrt(x(1,k)^2+x(3,k)^2) ), ... atan(-1*x(3,k)/x(1,k))]'+v(:,k); end %根据观测值开始滤波 P0=[10^4*eye(6),zeros(6,3);zeros(3,6),10^2*eye(3)];%协方差初始化 eP0=P0; stop=0.5/0.01; span=1/0.01; for k=2:T-3 dd=sqrt(ex(1,k-1)^2+ex(2,k-1)^2+ex(3,k-1)^2); DD=[dd,0;0,dd]; RR=0.1*eye(2)/(DD*DD'); tgo=tf-k*0.01+0.0000000000000001; c1=N/tgo^2; c2=N/tgo; c3=N*(exp(-longa*tgo)+longa*tgo-1)/(longa*tgo)^2; u(1,k-1)=[c1,c2,c3]*[ex(1,k-1),ex(4,k-1),ex(7,k-1)]'; u(2,k-1)=[c1,c2,c3]*[ex(2,k-1),ex(5,k-1),ex(8,k-1)]'; u(3,k-1)=[c1,c2,c3]*[ex(3,k-1),ex(6,k-1),ex(9,k-1)]'; %调用扩展卡尔曼算法子函数 [ex(:,k),eP0]=ekf(F,G,Q,RR,eP0,u(:,k-1),z(:,k),ex(:,k-1)); end for t=1:T-3 %求每个时间点误差的平方 Ep_ekfx(i,t)=sqrt((ex(1,t)-x(1,t))^2); Ep_ekfy(i,t)=sqrt((ex(2,t)-x(2,t))^2); Ep_ekfz(i,t)=sqrt((ex(3,t)-x(3,t))^2); Ep_ekf(i,t)=sqrt( (ex(1,t)-x(1,t))^2+(ex(2,t)-x(2,t))^2+(ex(3,t)-x(3,t))^2 ); Ev_ekf(i,t)=sqrt( (ex(4,t)-x(4,t))^2+(ex(5,t)-x(5,t))^2+(ex(6,t)-x(6,t))^2 ); Ea_ekf(i,t)=sqrt( (ex(7,t)-x(7,t))^2+(ex(8,t)-x(8,t))^2+(ex(9,t)-x(9,t))^2 ); end
for t=1:T-3 %求误差的均值,即RMS error_x(t)=mean(Ep_ekfx(:,t)); error_y(t)=mean(Ep_ekfy(:,t)); error_z(t)=mean(Ep_ekfz(:,t)); error_r(t)=mean(Ep_ekf(:,t)); error_v(t)=mean(Ev_ekf(:,t)); error_a(t)=mean(Ea_ekf(:,t)); end
end
t=0.01:0.01:3.67;
%轨迹图
figure
hold on;box on;grid on;
plot3(x(1,:),x(2,:),x(3,:),’-k.’)
plot3(ex(1,:),ex(2,:),ex(3,:),’-r.’,‘MarkerFace’,‘r’)
legend(‘real’,‘ekf’);
view(3)
title(‘position’)
%位置偏差图
figure
hold on;box on;grid on;
plot(t,error_r,‘b’);
xlabel(‘飞行时间/s’);
ylabel(‘弹目相对距离估计误差/m’);
%加速度偏差图
figure
hold on;box on;grid on;
plot(t,error_v,‘b’);
xlabel(‘飞行时间/s’);
ylabel(‘速度估计误差m/s’);
%子函数
%ex为扩展卡尔曼估计得到的状态
function [ex,P0]=ekf(F,G,Q,R,P0,u,z,ex)
%状态预测
Xn=Fex+Gu;
%观测预测
Zn=[atan( Xn(2)/sqrt(Xn(1)2+Xn(3)2) ),atan(-1Xn(3)/Xn(1))]’;
%协方差阵预测
P=FP0F’+Q;
%计算线性化的H矩阵
dh1_dx=-1Xn(1)Xn(2)/(Xn(1)2+Xn(2)2+Xn(3)2)/sqrt(Xn(1)2+Xn(3)^2);
dh1_dy=sqrt(Xn(1)2+Xn(3)2)/(Xn(1)2+Xn(2)2+Xn(3)^2);
dh1_dz=-1Xn(2)Xn(3)/(Xn(1)2+Xn(2)2+Xn(3)2)/sqrt(Xn(1)2+Xn(3)^2);
dh2_dx=Xn(3)/(Xn(1)2+Xn(3)2);
dh2_dy=0;
dh2_dz=-1Xn(1)/(Xn(1)2+Xn(3)2);
H=[dh1_dx,dh1_dy,dh1_dz,0,0,0,0,0,0;dh2_dx,dh2_dy,dh2_dz,0,0,0,0,0,0];
%卡尔曼增益
K=PH’/(HPH’+R);
%状态更新
ex=Xn+K(z-Zn);
%协方差阵更新
P0=(eye(9)-K*H)*P;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
寻的导弹EKF跟踪位置偏差
寻的导弹EKF跟踪速度偏差
寻的导弹EKF跟踪加速度偏差
无迹卡尔曼滤波
前面讨论的扩展卡尔曼滤波算法是对非线性的系统方程或者观测方程进行泰勒展开并保留其一阶近似项,这样不可避免地引入线性化误差。如果线性化假设不成立,采用这种算法则会导致滤波器性能下降以至于造成发散。另外,在一般情况下计算系统状态方程和观测方程的Jacobian矩阵是不易实现的,增加了算法的计算复杂度。
无迹卡尔曼滤波UKF摒弃了对非线性函数进行线性化的传统做法,采用卡尔曼线性滤波框架,对于一步预测方程,使用无迹变换UT来处理均值和协方差的非线性传递问题。UKF算法是对非线性函数的概率密度分布进行近似,用一系列确定样本来逼近状态的后验概率密度,而不是对非线性函数进行近似,不需要对Jacobian矩阵进行求导。UKF没有把高阶项忽略,因此对于非线性分布的娃统计量有较高的计算精度,有效地克服了扩展卡尔曼滤波的估计精度低、稳定性差的缺陷。
无迹卡尔曼滤波在单观测站目标跟踪中的应用
% 无迹Kalman滤波在目标跟踪中的应用
function UKF
clc;clear;
T=1; %雷达扫描周期
N=60/T; %总的采样次数
X=zeros(4,N);%目标真实位置,速度
X(:,1)=[-100,2,200,20]; %目标初始位置、速度
Z=zeros(1,N); %传感器对位置的观测
delta_w=1e-3; %如果增大这个参数,目标真实轨迹就是曲线
Q=delta_w*diag([0.5,1]) ;%过程噪声均值
G=[T^2/2,0;T,0;0,T^2/2;0,T];%过程噪声驱动矩阵
R=5;%观测噪声方差
F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];%状态转移矩阵
x0=200; %观测站的位置,可以设为其他值
y0=300;
Xstation=[x0,y0]; %雷达站的位置
w=sqrtm®randn(1,N);
for t=2:N
X(:,t)=FX(:,t-1)+Gsqrtm(Q)randn(2,1);%目标观测
end
%UKF滤波,UT变换
for t=1:N
Z(t)=Dist(X(:,t),Xstation)+w(t);
end
L=4;
alpha=1;
kalpha=0;
belta=2;
ramda=3-L;
for j=1:2L+1
Wm(j)=1/(2(L+ramda));
Wc(j)=1/(2*(L+ramda));
end
Wm(1)=ramda/(L+ramda);
Wc(1)=ramda/(L+ramda)+1-alpha^2+belta;%权值计算
Xukf=zeros(4,N);
Xukf(:,1)=X(:,1);%无迹卡尔曼滤波状态初始化
P0=eye(4);%协方差阵初始化
for t=2:N
xestimate= Xukf(:,t-1);
P=P0;
%第一步:获得一组Sigma点集
cho=(chol(P*(L+ramda)))’;
for k=1:L
xgamaP1(:,k)=xestimate+cho(:,k);
xgamaP2(:,k)=xestimate-cho(:,k);
end
Xsigma=[xestimate,xgamaP1,xgamaP2];
%第二步:对Sigma点集进行一步预测
Xsigmapre=FXsigma;
%第三步:利用第二步的结果计算均值和协方差
Xpred=zeros(4,1);%均值
for k=1:2L+1
Xpred=Xpred+Wm(k)Xsigmapre(:,k);
end
Ppred=zeros(4,4);%协方差阵预测
for k=1:2L+1
Ppred=Ppred+Wc(k)(Xsigmapre(:,k)-Xpred)(Xsigmapre(:,k)-Xpred)’;
end
Ppred=Ppred+GQG’;
%第四步:根据预测值,再一次使用UT变换,得到新的sigma点集
chor=(chol((L+ramda)Ppred))’;
for k=1:L
XaugsigmaP1(:,k)=Xpred+chor(:,k);
XaugsigmaP2(:,k)=Xpred-chor(:,k);
end
Xaugsigma=[Xpred XaugsigmaP1 XaugsigmaP2];
%第五步:观测预测
for k=1:2L+1%观测预测
Zsigmapre(1,k)=hfun(Xaugsigma(:,k),Xstation);
end
%第六步:计算观测预测均值和协方差
Zpred=0;%观测预测的均值
for k=1:2L+1
Zpred=Zpred+Wm(k)Zsigmapre(1,k);
end
Pzz=0;
for k=1:2L+1
Pzz=Pzz+Wc(k)(Zsigmapre(1,k)-Zpred)*(Zsigmapre(1,k)-Zpred)’;
end
Pzz=Pzz+R;%得到协方差Pzz
Pxz=zeros(4,1);
for k=1:2*L+1
Pxz=Pxz+Wc(k)*(Xaugsigma(:,k)-Xpred)*(Zsigmapre(1,k)-Zpred)';
end
%第七步:计算卡尔曼增益
K=Pxz*inv(Pzz);
%第八步:状态和方差更新
xestimate=Xpred+K*(Z(t)-Zpred);%状态更新
P=Ppred-K*Pzz*K';%方差更新
P0=P;
Xukf(:,t)=xestimate;
end
%误差分析
for i=1:N
Err_KalmanFilter(i)=Dist(X(:,i),Xukf(:,i));%滤波后的误差
end
%画图
figure
hold on;box on;
plot(X(1,:),X(3,:),’-k.’);%真实轨迹
plot(Xukf(1,:),Xukf(3,:),’-r+’);%无迹卡尔曼滤波轨迹
legend(‘真实轨迹’,‘UKF轨迹’)
figure
hold on; box on;
plot(Err_KalmanFilter,’-ks’,‘MarkerFace’,‘r’)
%子函数:求两点间的距离
function d=Dist(X1,X2)
if length(X2)<=2
d=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(2))^2 );
else
d=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(3))^2 );
end
%观测子函数:观测距离
function [y]=hfun(x,xx)
y=sqrt((x(1)-xx(1))2+(x(3)-xx(2))2);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
跟踪轨迹
误差曲线
UKF在匀加速直线运动目标跟踪中的应用
% 功能说明: UKF在目标跟踪中的应用
% 参数说明: 1、状态6维,x方向的位置、速度、加速度;
% y方向的位置、速度、加速度;
% 2、观测信息为距离和角度;
function ukf_for_track_6_div_system
n=6;%状态维数
t=0.5;%采用点数
Q=[1 0 0 0 0 0;
0 1 0 0 0 0;
0 0 0.01 0 0 0;
0 0 0 0.01 0 0;
0 0 0 0 0.0001 0;
0 0 0 0 0 0.0001];%过程噪声协方差阵
R = [100 0;
0 0.001^2];%量测噪声协方差阵
%状态方程
f=@(x)[x(1)+t*x(3)+0.5*t^2*x(5);x(2)+t*x(4)+0.5*t^2*x(6);...
x(3)+t*x(5);x(4)+t*x(6);x(5);x(6)];
%x1为X轴位置,x2为Y轴位置,x3、x4分别是X、Y轴的速度,x5、x6为X、Y两方向的加速度
%观测方程
h=@(x)[sqrt(x(1)^2+x(2)^2);atan(x(2)/x(1))];
s=[1000;5000;10;50;2;-4];
x0=s+sqrtm(Q)*randn(n,1);%初始化状态
P0 =[100 0 0 0 0 0;
0 100 0 0 0 0;
0 0 1 0 0 0;
0 0 0 1 0 0;
0 0 0 0 0.1 0;
0 0 0 0 0 0.1];%初始化协方差
N=50;%总仿真时间步数,即总时间
Xukf = zeros(n,N);%UKF滤波状态初始化
X = zeros(n,N);%真实状态
Z = zeros(2,N);%测量值
for i=1:N
X(:,i)= f(s)+sqrtm(Q)*randn(6,1);%模拟,产生目标运动真实轨迹
s = X(:,i);
end
ux=x0;%ux为中间变量
for k=1:N
Z(:,k)= h(X(:,k)) + sqrtm(R)*randn(2,1);%测量值,保存观测
[Xukf(:,k), P0] = ukf(f,ux,P0,h,Z(:,k),Q,R);%调用ukf滤波算法
ux=Xukf(:,k);
end
%跟踪误差分析
%这里只分析位置误差,速度、加速度误差分析在此略
for k=1:N
RMS(k)=sqrt( (X(1,k)-Xukf(1,k))^2+(X(2,k)-Xukf(2,k))^2 );
end
%画图
figure
t=1:N;
hold on;box on;
plot( X(1,t),X(2,t), 'k-')
plot(Z(1,t).*cos(Z(2,t)),Z(1,t).*sin(Z(2,t)),'-b.')
plot(Xukf(1,t),Xukf(2,t),'-r.')
legend('实际值','测量值','ukf估计值');
xlabel('x方向位置/米')
ylabel('y方向位置/米')
%误差分析图
figure
box on;
plot(RMS,'-ko','MarkerFace','r')
xlabel('t/秒')
ylabel('偏差/米')
%UKF子函数
function [X,P]=ukf(ffun,X,P,hfun,Z,Q,R)
%非线性系统中UKF算法
L=numel(X);%状态维数
m=numel(Z);%观测维数
alpha=1e-2;%默认系数,参看UT变换,下同
ki=0;%默认系数
beta=2;%默认系数
lambda=alpha^2*(L+ki)-L;%默认系数
c=L+lambda;%默认系数
Wm=[lambda/c 0.5/c+zeros(1,2L)];%权值
Wc=Wm;
Wc(1)=Wc(1)+(1-alpha^2+beta);%权值
c=sqrt©;
%第一步,获取一组sigma点集
%sigma点集,在状态X附近的点集,X是613矩阵,每列为1样本
Xsigmaset=sigmas(X,P,c);
%第二、第三、四步,对sigma点集进行一步预测,得到均值XImeans和方差P1和新sigma点集X1
%对状态UT变换
[X1means,X1,P1,X2]=ut(ffun,Xsigmaset,Wm,Wc,L,Q);
%第五、六步,得到观测预测,Z1为X1集合的预测,Zpre为Z1的均值。
%Pzz为协方差
[Zpre,Z1,Pzz,Z2]=ut(hfun,X1,Wm,Wc,m,R);%对观测UT变换
Pxz=X2diag(Wc)Z2’;%协方差Pxz
%第七步,计算卡尔曼增益
K=Pxzinv(Pzz);
%第八步,状态和方差更新
X=X1means+K(Z-Zpre);%状态更新
P=P1-K*Pxz’;%协方差更新
%UT变换子函数
% 输入:fun为函数句柄,Xsigma为样本集,Wm和Wc为权值,n为状态维数(n=6),COV为方差
% 输出:Xmeans为均值
function [Xmeans,Xsigma_pre,P,Xdiv]=ut(fun,Xsigma,Wm,Wc,n,COV)
LL=size(Xsigma,2);%得到Xsigma样本个数
Xmeans=zeros(n,1);%均值
Xsigma_pre=zeros(n,LL);
for k=1:LL
Xsigma_pre(:,k)=fun(Xsigma(:,k));%一步预测
Xmeans=Xmeans+Wm(k)Xsigma_pre(:,k);
end
Xdiv=Xsigma_pre-Xmeans(:,ones(1,LL));%预测减去均值
P=Xdivdiag(Wc)*Xdiv’+COV;%协方差
%产生Sigma点集函数
function Xset=sigmas(X,P,c)
A = c*chol§’;%Cholesky分解
Y = X(:,ones(1,numel(X)));
Xset = [X Y+A Y-A];
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
运动轨迹
跟踪误差
交互多模型卡尔曼滤波
在卡尔曼滤波算法中用到了状态转移方程和观测方程,被估计量随时间变化,它是一种动态估计。在目标跟踪中,不必知道目标的运动模型就能够实时的修正目标的状态参量(位置、速度等),具有良好的适应性。但是当目标实施机动时,仅采用基本的卡尔曼滤波算法往往得不到理想的结果。这时需要采用自适应算法。交互多模型IMM是一种软切换算法,目前在机动目标跟踪领域中得到了广泛的应用。IMM算法使用两个或更多的模型来描述工作过程中可能的状态,最后通过有效的加权融合进行系统状态估计,很好地克服了单模型估计误差较大的问题。
% 交互多模Kalman滤波在目标跟踪中的应用
%
function ImmKalman
clear;
T=2;%雷达扫描周期,即采样周期
M=50;%滤波次数
N=900/T;%总采样点数
N1=400/T;%第一转弯处采样起点
N2=600/T;%第一匀速处采样起点
N3=610/T;%第二转弯处采样起点
N4=660/T;%第二匀速处采样起点
Delta=100;%测量噪声标准差
%对真实的轨迹和观测轨迹数据的初始化
Rx=zeros(N,1);
Ry=zeros(N,1);
Zx=zeros(N,M);
Zy=zeros(N,M);
% 1-沿y轴匀速直线
t=2:T:400;
x0=2000+0*t';
y0=10000-15*t';
% 2-慢转弯
t=402:T:600;
x1=x0(N1)+0.075*((t'-400).^2)/2;
y1=y0(N1)-15*(t'-400)+0.075*((t'-400).^2)/2;
% 3-匀速
t=602:T:610;
vx=0.075*(600-400);
x2=x1(N2-N1)+vx*(t'-600);
y2=y1(N2-N1)+0*t';
% 4-快转弯
t=612:T:660;
x3=x2(N3-N2)+(vx*(t'-610)-0.3*((t'-610).^2)/2);
y3=y2(N3-N2)-0.3*((t'-610).^2)/2;
% 5-匀速直线
t=662:T:900;
vy=-0.3*(660-610);
x4=x3(N4-N3)+0*t';
y4=y3(N4-N3)+vy*(t'-660);
% 最终将所有轨迹整合成为一个列向量,即真实轨迹数据,Rx为Real-x,Ry为Real-y
Rx=[x0;x1;x2;x3;x4];
Ry=[y0;y1;y2;y3;y4];
% 对每次蒙特卡洛仿真的滤波估计位置的初始化
Mt_Est_Px=zeros(M,N);
Mt_Est_Py=zeros(M,N);
% 产生观测数据,要仿真M次,必须有M次
nx=randn(N,M)*Delta;%产生观测噪声
ny=randn(N,M)*Delta;
Zx=Rx*ones(1,M)+nx;%真实值的基础上叠加噪声,即构成计算机模拟的观测值
Zy=Ry*ones(1,M)+ny;
for m=1:M
%滤波初始化
Mt_Est_Px(m,1)=Zx(1,m);%初始数据
Mt_Est_Py(m,1)=Zx(2,m);
xn(1)=Zx(1,m);%滤波初值
xn(2)=Zx(2,m);
yn(1)=Zy(1,m);
yn(2)=Zy(2,m);
%非机动模型参数
phi=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];
h=[1,0,0,0;0,0,1,0];
g=[T/2,0;1,0;0,T/2;0,1];
q=[Delta^2,0;0,Delta^2];
vx=(Zx(2)-Zx(1,m))/2;
vy=(Zy(2)-Zy(1,m))/2;
%初始状态估计
x_est=[Zx(2,m);vx;Zy(2,m);vy];
p_est=[Delta^2,Delta^2/T,0,0;Delta^2/T,2*Delta^2/(T^2),0,0;
0,0,Delta^2,Delta^2/T;0,0,Delta^2/T,2*Delta^2/(T^2)];
Mt_Est_Px(m,2)=x_est(1);
Mt_Est_Py(m,2)=x_est(3);
%滤波开始
for r=3:N
z=[Zx(r,m);Zy(r,m)];
if r<20
x_pre=phi*x_est;%预测
p_pre=phi*p_est*phi';%预测误差协方差
k=p_pre*h'*inv(h*p_pre*h'+q);%卡尔曼增益
x_est=x_pre+k*(z-h*x_pre);%滤波
p_est=(eye(4)-k*h)*p_pre;%滤波协方差
xn(r)=x_est(1);%记录采样点滤波数据
yn(r)=x_est(3);
Mt_Est_Px(m,r)=x_est(1);%记录第m次仿真滤波估计数据
Mt_Est_Py(m,r)=x_est(3);
else
if r==20
X_est=[x_est;0;0];%扩充维数
P_est=p_est;
P_est(6,6)=0;
for i=1:3
Xn_est{i,1}=X_est;
Pn_est{i,1}=P_est;
end
u=[0.8,0.1,0.1];%模型概率初始化
end
%调用IMM算法
[X_est,P_est,Xn_est,Pn_est,u]=IMM(Xn_est,Pn_est,T,z,Delta,u);
xn(r)=X_est(1);
yn(r)=X_est(3);
Mt_Est_Px(m,r)=X_est(1);
Mt_Est_Py(m,r)=X_est(3);
end
end
end
%结束第一次滤波
%%%%%%%%%%%%%%%%%%%
%滤波结果的数据分析
err_x=zeros(N,1);
err_y=zeros(N,1);
delta_x=zeros(N,1);
delta_y=zeros(N,1);
%计算滤波的误差均值及标准差
for r=1:N
%估计误差均值
ex=sum(Rx(r)-Mt_Est_Px(:,r));
ey=sum(Ry(r)-Mt_Est_Py(:,r));
err_x(r)=ex/M;
err_y(r)=ey/M;
eqx=sum((Rx(r)-Mt_Est_Px(:,r)).^2);
eqy=sum((Ry(r)-Mt_Est_Py(:,r)).^2);
%估计误差标准差
delta_x(r)=sqrt(abs(eqx/M-(err_x(r)^2)));
delta_y(r)=sqrt(abs(eqy/M-(err_y(r)^2)));
end
%画图
figure(1);
plot(Rx,Ry,'k-',Zx,Zy,'g:',xn,yn,'r-.');
legend('真实轨迹','观测样本','估计轨迹');
figure(2);
subplot(2,1,1);
plot(err_x);
%axis([1,N,-300,300]);
title('x方向估计误差均值');
subplot(2,1,2);
plot(err_y);
%axis([1,N,-300,300]);
title('y方向估计误差均值');
figure(3);
subplot(2,1,1);
plot(delta_x);
%axis([1,N,0,1]);
title('x方向估计误差标准差');
subplot(2,1,2);
plot(delta_y);
%axis([1,N,0,1]);
title('y方向估计误差标准差');
%% 子函数
%% X_est,P_est返回第m次仿真第r个采样点的滤波结果
%% Xn_est,Pn_est记录每个模型对应的第m次仿真第r次仿真第r个采样点的滤波结果
%% u为模型概率
function [X_est,P_est,Xn_est,Pn_est,u]=IMM(Xn_est,Pn_est,T,Z,Delta,u)
%% 控制模型转换的马尔科夫链的转移概率矩阵
P=[0.95,0.025,0.025;0.025,0.95,0.025;0.025,0.025,0.95];
%所采用的第三个模型参数,模型一位非机动,模型二、三均为机动模型
%模型一
PHI{1,1}=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];
PHI{1,1}(6,6)=0;
PHI{2,1}=[1,T,0,0,T2/2,0;0,1,0,0,T,0;0,0,1,T,0,T2/2;
0,0,0,1,0,T;0,0,0,0,1,0;0,0,0,0,0,1];%模型二
PHI{3,1}=PHI{2,1};%模型三
G{1,1}=[T/2,0;1,0;0,T/2;0,1];%模型一
G{1,1}(6,2)=0;
G{2,1}=[T2/4,0;T/2,0;0,T2/4;0,T/2;1,0;0,1];%模型二
G{3,1}=G{2,1};%模型三
Q{1,1}=zeros(2);%模型一
Q{2,1}=0.001eye(2);%模型二
Q{3,1}=0.0114eye(2);%模型三
H=[1,0,0,0,0,0;0,0,1,0,0,0];
R=eye(2)*Delta^2;%观测噪声协方差阵
mu=zeros(3,3);%混合概率矩阵
c_mean=zeros(1,3);%归一化常数
for i=1:3
c_mean=c_mean+P(i,:)*u(i);
end
for i=1:3
mu(i,:)=P(i,:)u(i)./c_mean;
end
%输入交互
for j=1:3
X0{j,1}=zeros(6,1);
P0{j,1}=zeros(6);
for i=1:3
X0{j,1}=X0{j,1}+Xn_est{i,1}mu(i,j);
end
for i=1:3
P0{j,1}=P0{j,1}+mu(i,j)( Pn_est{i,1}…
+(Xn_est{i,1}-X0{j,1})(Xn_est{i,1}-X0{j,1})’);
end
end
%模型条件滤波
a=zeros(1,3);
for j=1:3
%观测预测
X_pre{j,1}=PHI{j,1}*X0{j,1};
%协方差预测
P_pre{j,1}=PHI{j,1}*P0{j,1}*PHI{j,1}’+G{j,1}*Q{j,1}G{j,1}’;
%计算卡尔曼增益
K{j,1}=P_pre{j,1}H’inv(HP_pre{j,1}H’+R);
%状态更新
Xn_est{j,1}=X_pre{j,1}+K{j,1}(Z-HX_pre{j,1});
%协方差更新
Pn_est{j,1}=(eye(6)-K{j,1}H)P_pre{j,1};
end
%模型概率更新
for j=1:3
v{j,1}=Z-HX_pre{j,1};%新息
s{j,1}=HP_pre{j,1}H’+R;%观测协方差矩阵
n=length(s{j,1})/2;
a(1,j)=1/((2pi)^nsqrt(det(s{j,1})))exp(-0.5v{j,1}’…
*inv(s{j,1})*v{j,1});%观测相对于模型j的似然函数
end
c=sum(a.*c_mean);%归一化常数
u=a.c_mean./c;%模型概率更新
%输出交互
Xn=zeros(6,1);
Pn=zeros(6);
for j=1:3
Xn=Xn+Xn_est{j,1}.u(j);
end
for j=1:3
Pn=Pn+u(j).(Pn_est{j,1}+(Xn_est{j,1}-Xn)(Xn_est{j,1}-Xn)’);
end
%返回滤波结果
X_est=Xn;
P_est=Pn;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
目标的真实轨迹、观测轨迹、估计轨迹
滤波误差的均值曲线
滤波误差的标准差曲线
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
</div>
</article>
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/qq514218063/article/details/17034813" target="_blank" title="卡尔曼滤波及其MATLAB程序">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>卡尔曼滤波</em><em>及其</em>MATLAB程序 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">11-30</span>
<span class="read-num hover-hide">
阅读数
2万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/qq514218063/article/details/17034813" target="_blank" title="卡尔曼滤波及其MATLAB程序">
<span class="desc oneline">今天写了个卡尔曼滤波的小程序,希望对有需要的同学有点帮助。卡尔曼滤波是一个很常用的滤波算法,与维纳滤波相比有很多长处。这里我们把KalmanFilter简称为KF。KF的基本思想是:采用信号、噪声、状...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/qq514218063">来自: <span class="blog_title"> 张文宇的博客</span></a>
</span>
</p>
</div>
</div>
一个应用实例详解卡尔曼滤波及其算法实现
05-14 阅读数 10万+
为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单... 博文 来自: OUYANG_LINUX007的专栏
卡尔曼滤波的简单实现(Matlab)
01-22 阅读数 7293
转自:https://www.jianshu.com/p/c512a2b82907理解起来方便简单快捷故转过来记录用卡尔曼滤波的数学原理当然是它最美妙的部分,不过据说挺难看懂的,我也就知难而退了,毕竟... 博文 来自: worldbit的博客
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_59" data-pid="59" data-report-view="{"mod":"kp_popu_59-78","keyword":""}" data-report-click="{"mod":"kp_popu_59-78","keyword":""}"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u3491668",
container: s
});
})();
卡尔曼滤波matlab仿真
04-10 阅读数 3335
一、温度测量[plain] viewplain copy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%... 博文 来自: weixin_41848303的博客
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_36750643/10239768","strategy":"BlogCommendFromBaidu","index":"5"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_36750643/10239768","strategy":"BlogCommendFromBaidu","index":"5"}">
<a href="https://download.csdn.net/download/qq_36750643/10239768" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>的<em>MATLAB实现</em> </h4>
<span class="data float-right">02-04</span>
</div>
<div class="desc oneline">
卡尔曼滤波的MATLAB实现。包括代码及详细说明,画出了各种不同的曲线。 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/weixin_44044161/11050393","strategy":"BlogCommendFromBaidu","index":"6"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/weixin_44044161/11050393","strategy":"BlogCommendFromBaidu","index":"6"}">
<a href="https://download.csdn.net/download/weixin_44044161/11050393" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>器matlab </h4>
<span class="data float-right">03-22</span>
</div>
<div class="desc oneline">
关于kf的matlab程序,仿真实列为目标耿总问题,调用kf函数,实现滤波平滑 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_35632833/10876623","strategy":"BlogCommendFromBaidu","index":"7"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_35632833/10876623","strategy":"BlogCommendFromBaidu","index":"7"}">
<a href="https://download.csdn.net/download/qq_35632833/10876623" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>-Matlab程序 </h4>
<span class="data float-right">12-26</span>
</div>
<div class="desc oneline">
卡尔曼滤波程序Matlab实现。 Kalman滤波在测量方差已知的情况下能够从一系列存在测量噪声的数据中,估计动态系统的状态. 由于, 它便于计算机编程实现, 并能够对现场采集的数据进行实时的更新和处 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/linjieli_uestc/10770753","strategy":"BlogCommendFromBaidu","index":"8"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/linjieli_uestc/10770753","strategy":"BlogCommendFromBaidu","index":"8"}">
<a href="https://download.csdn.net/download/linjieli_uestc/10770753" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em> Matlab程序 </h4>
<span class="data float-right">11-07</span>
</div>
<div class="desc oneline">
代码为书籍《卡尔曼滤波原理及应用》配套的代码,可用于卡尔曼滤波的学习 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/90769550","strategy":"searchFromBaidu1","index":"1"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/90769550","strategy":"searchFromBaidu1","index":"1"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/90769550","strategy":"searchFromBaidu1","index":0,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/90769550","strategy":"searchFromBaidu1","index":0,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/zhangquan2015/article/details/90769550" target="_blank"> <h4 class="text-truncate oneline" style="width: 622px;">CMakeLists编写 - Joey's Blog - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">6-17</span> </p> </div> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/52137892","strategy":"searchFromBaidu1","index":"2"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/52137892","strategy":"searchFromBaidu1","index":"2"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/52137892","strategy":"searchFromBaidu1","index":1,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/52137892","strategy":"searchFromBaidu1","index":1,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/zhangquan2015/article/details/52137892" target="_blank"> <h4 class="text-truncate oneline" style="width: 622px;">基于Qt的QQ局域网聊天 - Joey's Blog - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">5-29</span> </p> </div> </a> </div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_60" data-pid="60" data-report-view="{"mod":"kp_popu_60-43","keyword":""}" data-report-click="{"mod":"kp_popu_60-43","keyword":""}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1566442796312_460" id="QIHOO__WEB__SO__1566442796312_460" style="display:block;margin:0;padding:0;border:none;width:900px;height:84px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1566442796312_460-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1566442796312_460 singleImage clk" data-href="https://s3.nzbdw.com/s?type=2&r=20&mv_ref=blog.csdn.net&enup=CAABPZZFTQgAAk1Flj0A&mvid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&bid=138b26aa9a90a369&price=AAAAAF1eBSoAAAAAAAfavl/y6Ve50+eWfKL4qg==&finfo=DAABCAABAAAAcQgAAgAAADcEAAM/YEDmNtDrOQAIAAIAAAADCgADTvv3UV+5cI8IAAQAAAA5BgAGLbcGAAoAAAgADgAAAB0KAA8AAAAAABE+EAA&ugi=FcTgigEVyNtrTBUCFc4EFdoEFQAAFeGl/PUIFoQIFcgBFoD64KT8qsgFHBaNy7+FvZqH/8wBFQAAAA&uai=FeTGlAIlAhUEFoCo1s20jvf7nQEV8ggllOq16A0lABUaFAAcFuPHo72Kx6qTzgEVAAAA&ubi=FcidXBXKt+wCFay07hgV+Oz4WxUEFRwW/On9uhcWgKjrtL7U+/udATQCFrDgkIAIJQYVlImR0QwVwgUVADac87WxjaeY2xEA&clickid=0&cpx=__OFFSET_X__&cpy=__OFFSET_Y__&cs=__EVENT_TIME_START__&ce=__EVENT_TIME_END__&csign2=PmQ_DH6pDm2=&url=http%3A%2F%2Fvip.qooo9.cn" data-pv="https://s3.nzbdw.com/s?type=1&r=20&tid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&finfo=DAABCAABAAAAcQgAAgAAADcEAAM/YEDmNtDrOQAIAAIAAAADCgADTvv3UV+5cI8IAAQAAAA5BgAGLbcGAAoAAAgADgAAAB0KAA8AAAAAABE+EAA&mv_ref=blog.csdn.net&enup=CAABPZZFTQgAAk1Flj0A&mvid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&bid=138b26aa9a90a369&ugi=FcTgigEVyNtrTBUCFc4EFdoEFQAAFeGl/PUIFoQIFcgBFoD64KT8qsgFHBaNy7+FvZqH/8wBFQAAAA&uai=FeTGlAIlAhUEFoCo1s20jvf7nQEV8ggllOq16A0lABUaFAAcFuPHo72Kx6qTzgEVAAAA&ubi=FcidXBXKt+wCFay07hgV+Oz4WxUEFRwW/On9uhcWgKjrtL7U+/udATQCFrDgkIAIJQYVlImR0QwVwgUVADac87WxjaeY2xEA&ds=1&price=AAAAAF1eBSoAAAAAAAfavl/y6Ve50+eWfKL4qg==,https://max-l.mediav.com/rtb?type=2&ver=1&v=CGQSEDEzOGIyNmFhOWE5MGEzNjkYsqOKASCisEUoAWIXNzQyMDc0MDQyMTMwNTEyMjQwMjAwMTmIAQA&k=dVpuYQAAAAA=&w=AAAAAF1eBSoAAAAAAAfa_AYIGcMC0una83tE2w&i=5IvvYcy7TDZn&exp=BQBECgBEAQJEBAJEEABDIgBD&z=1" data-clk="https://max-l.mediav.com/rtb?type=3&ver=1&v=CGQSEDEzOGIyNmFhOWE5MGEzNjkYsqOKASCisEUoAWIXNzQyMDc0MDQyMTMwNTEyMjQwMjAwMTlwAA&k=/nutgAAAAAA=&i=5IvvYcy7TDZn&exp=BQBECgBEAQJEBAJEEABDIgBD&x=__OFFSET_X__&y=__OFFSET_Y__&st=__EVENT_TIME_START__&et=__EVENT_TIME_END__&adw=__ADSPACE_W__&adh=__ADSPACE_H__&tc=&turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.nzwgs.com/galileo/755556-ffee2684cc43e378e978f83373b7b3d8.jpg)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">老中医说:饭后用一物,变易瘦体质,想瘦多少就瘦多少</info-div>
<info-div class="singleImage-desc">江汇 · 猎媒</info-div>
</info-div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/yueroo/11150561","strategy":"BlogCommendFromBaidu","index":"9"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/yueroo/11150561","strategy":"BlogCommendFromBaidu","index":"9"}">
<a href="https://download.csdn.net/download/yueroo/11150561" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em><em>MATLAB实现</em> </h4>
<span class="data float-right">04-29</span>
</div>
<div class="desc oneline">
详细介绍了卡尔曼滤波原理,对卡尔曼滤波进行了MATLAB仿真设计 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/83183540","strategy":"searchFromBaidu1","index":"3"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/83183540","strategy":"searchFromBaidu1","index":"3"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/83183540","strategy":"searchFromBaidu1","index":2,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/83183540","strategy":"searchFromBaidu1","index":2,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/zhangquan2015/article/details/83183540" target="_blank"> <h4 class="text-truncate oneline" style="width: 631px;">正则表达式验证合法电话号码 - Joey's Blog - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">4-1</span> </p> </div> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/52138303","strategy":"searchFromBaidu1","index":"4"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/52138303","strategy":"searchFromBaidu1","index":"4"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/52138303","strategy":"searchFromBaidu1","index":3,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/52138303","strategy":"searchFromBaidu1","index":3,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/zhangquan2015/article/details/52138303" target="_blank"> <h4 class="text-truncate oneline" style="width: 622px;">Qt双击表格获取表格内容 - Joey's Blog - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">6-13</span> </p> </div> </a> </div>
基于Qt的QQ局域网聊天
08-06 阅读数 6371
近几日闲来无事,便想做个东西玩玩,敲敲代码,取取经,玩玩Qt,做点小Demo。参考多方资料,结合了众多网友的技术,做了一个基于Qt的QQ局域网聊天软件。源码下载:点击下载源码GithubPage:ht... 博文 来自: Joey's Blog
<div class="recommend-item-box blog-expert-recommend-box" style="display: block;">
<div class="d-flex">
<div class="blog-expert-recommend">
<div class="blog-expert">
<div class="blog-expert-flexbox" data-report-view="{"mod":"popu_709","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><a href="https://blog.csdn.net/qq514218063" target="_blank"><img src="https://avatar.csdn.net/4/F/B/3_qq514218063.jpg" alt="babybabytellmewhy" title="babybabytellmewhy"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><span class="blog-expert-button-follow btn-red-follow" data-name="qq514218063" data-nick="babybabytellmewhy">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><a href="https://blog.csdn.net/qq514218063" target="_blank"><h5 class="oneline" title="babybabytellmewhy">babybabytellmewhy</h5></a></span> <p></p><p class="article-num" title="6篇文章"> 6篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><a href="https://blog.csdn.net/OUYANG_LINUX007" target="_blank"><img src="https://avatar.csdn.net/B/4/3/3_ouyang_linux007.jpg" alt="OUYANG_LINUX007" title="OUYANG_LINUX007"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><span class="blog-expert-button-follow btn-red-follow" data-name="OUYANG_LINUX007" data-nick="OUYANG_LINUX007">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><a href="https://blog.csdn.net/OUYANG_LINUX007" target="_blank"><h5 class="oneline" title="OUYANG_LINUX007">OUYANG_LINUX007</h5></a></span> <p></p><p class="article-num" title="66篇文章"> 66篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><a href="https://blog.csdn.net/qqh19910525" target="_blank"><img src="https://avatar.csdn.net/6/D/C/3_qqh19910525.jpg" alt="如梦如幻2015" title="如梦如幻2015"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><span class="blog-expert-button-follow btn-red-follow" data-name="qqh19910525" data-nick="如梦如幻2015">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><a href="https://blog.csdn.net/qqh19910525" target="_blank"><h5 class="oneline" title="如梦如幻2015">如梦如幻2015</h5></a></span> <p></p><p class="article-num" title="125篇文章"> 125篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><a href="https://blog.csdn.net/worldbit" target="_blank"><img src="https://avatar.csdn.net/9/C/D/3_worldbit.jpg" alt="worldbit" title="worldbit"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><span class="blog-expert-button-follow btn-red-follow" data-name="worldbit" data-nick="worldbit">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/zhangquan2015/article/details/79264540"}"><a href="https://blog.csdn.net/worldbit" target="_blank"><h5 class="oneline" title="worldbit">worldbit</h5></a></span> <p></p><p class="article-num" title="8篇文章"> 8篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div></div>
</div>
</div>
</div>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/76379164","strategy":"searchFromBaidu1","index":"5"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/76379164","strategy":"searchFromBaidu1","index":"5"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/76379164","strategy":"searchFromBaidu1","index":4,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/76379164","strategy":"searchFromBaidu1","index":4,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/zhangquan2015/article/details/76379164" target="_blank"> <h4 class="text-truncate oneline" style="width: 622px;">OpenCV学习之图像尺寸变换 - Joey's Blog - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">3-18</span> </p> </div> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/81347392","strategy":"searchFromBaidu1","index":"6"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/81347392","strategy":"searchFromBaidu1","index":"6"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/81347392","strategy":"searchFromBaidu1","index":5,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/81347392","strategy":"searchFromBaidu1","index":5,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/zhangquan2015/article/details/81347392" target="_blank"> <h4 class="text-truncate oneline" style="width: 622px;">C++网络通信实现 - Joey's Blog - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">8-12</span> </p> </div> </a> </div>
C语言实现图像的读写旋转与缩放
05-01 阅读数 5924
个人主页:https://zhangquan1995.github.io实现方案由三部分组成:主函数main.cpp、函数实现zq_CV.cpp、程序头文件zq_CV.h。其中,主函数main.cpp... 博文 来自: Joey's Blog
卡尔曼滤波(Kalman Filter)原理理解和测试
01-18 阅读数 1万+
KalmanFilter学原理学习1.KalmanFilter历史Kalman滤波器的历史,最早要追溯到17世纪,RogerCotes开始研究最小均方问题。但由于缺少实际案例的支撑(那个时候哪来那么多... 博文 来自: 一只小蜗牛 爬呀爬
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_61" data-pid="61" data-report-view="{"mod":"kp_popu_61-622","keyword":""}" data-report-click="{"mod":"kp_popu_61-622","keyword":""}"><div id="_irqkblbi1a8pu6kcka0b2o6r" style="width: 100%;"><div id="axytgfh" style="padding-right:0px;"><iframe width="852" frameborder="0" height="66" scrolling="no" src="https://pos.baidu.com/s?hei=66&wid=852&di=u3600846&ltu=https%3A%2F%2Fblog.csdn.net%2Fzhangquan2015%2Farticle%2Fdetails%2F79264540&psi=1f283c47c9792b12ed499c54965f226d&cja=false&pss=1858x45709&ti=%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2%E5%BA%94%E7%94%A8%E5%8F%8A%E5%85%B6matlab%E5%AE%9E%E7%8E%B0&pis=-1x-1&ari=2&dis=0&prot=2&dtm=HTML_POST&ant=0&chi=1&ps=43749x580&cdo=-1&psr=1920x1080&cmi=6&drs=1&exps=111000,119009,110011&par=1920x1040&tpr=1566442796618&col=zh-CN&dc=3&cce=true&pcs=1858x920&ccd=24&cec=UTF-8&cpl=4&cfv=0&dri=0&ltr=https%3A%2F%2Fblog.csdn.net%2FAsc11_%2Farticle%2Fdetails%2F40714239&tcn=1566442797&tlm=1566442796&dai=5"></iframe><div style="display:none;padding-right:0px;"></div></div></div><script type="text/javascript" src="//rabc1.iteye.com/common/web/production/79m9.js?f=aszggcwz"></script></div></div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/91537827","strategy":"searchFromBaidu1","index":"9"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/91537827","strategy":"searchFromBaidu1","index":"9"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/91537827","strategy":"searchFromBaidu1","index":8,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/91537827","strategy":"searchFromBaidu1","index":8,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/zhangquan2015/article/details/91537827" target="_blank"> <h4 class="text-truncate oneline" style="width: 631px;">CMake交叉编译 - Joey's Blog - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">7-1</span> </p> </div> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/80160864","strategy":"searchFromBaidu1","index":"10"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/80160864","strategy":"searchFromBaidu1","index":"10"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/80160864","strategy":"searchFromBaidu1","index":9,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/zhangquan2015/article/details/80160864","strategy":"searchFromBaidu1","index":9,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/zhangquan2015/article/details/80160864" target="_blank"> <h4 class="text-truncate oneline" style="width: 631px;">C语言实现图像的读写旋转与缩放 - Joey's Blog - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">8-7</span> </p> </div> </a> </div>
matlab实现卡尔曼滤波(Kalman filter)
03-26 阅读数 1051
很早以前就听说卡尔曼滤波,一直没有下功夫彻底弄懂过。一年前,听一个老师(很好的一个老师,讲得认真、负责,科研也不错)做过专讲,从而加深了对Kalmanfilter的理解和认识,现记录如下,与大家分享... 博文 来自: 翟光先生_VIYOO的小小空间
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_27432295/10268791","strategy":"BlogCommendFromBaidu","index":"15"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_27432295/10268791","strategy":"BlogCommendFromBaidu","index":"15"}">
<a href="https://download.csdn.net/download/qq_27432295/10268791" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
扩展<em>卡尔曼滤波</em>程序示例(matlab) </h4>
<span class="data float-right">03-04</span>
</div>
<div class="desc oneline">
matlab写的一个扩展卡尔曼滤波程序,状态方程为线性,观测方程非线性,最后输出图片以便观察是否收敛,分享给大家参考。还有一个C++版本的。 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/yuchuan3912/1503931","strategy":"BlogCommendFromBaidu","index":"16"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/yuchuan3912/1503931","strategy":"BlogCommendFromBaidu","index":"16"}">
<a href="https://download.csdn.net/download/yuchuan3912/1503931" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>matlab工具箱 </h4>
<span class="data float-right">07-20</span>
</div>
<div class="desc oneline">
一个国外网站上的程序包,里面有很成熟的算法,包括简单的例子介绍,相信对用卡尔曼滤波技术的朋友会有很大帮助 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_16006651/10180710","strategy":"BlogCommendFromBaidu","index":"17"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_16006651/10180710","strategy":"BlogCommendFromBaidu","index":"17"}">
<a href="https://download.csdn.net/download/qq_16006651/10180710" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>Matlab </h4>
<span class="data float-right">12-29</span>
</div>
<div class="desc oneline">
在Matlab里面,描述的卡尔曼滤波。清楚的描述了卡尔曼滤波的表达试 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
【Kalman】卡尔曼滤波Matlab简单实现
10-24 阅读数 3万+
本节卡尔曼滤波Matlab实现是针对线性系统估计的,仅为简单仿真。1.离散时间线性动态系统的状态方程 线性系统采用状态方程、观测方程及其初始条件来描述。线性离散时间系统的一般状态方程可描述为 ... 博文 来自: 笔尖的博客
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_62" data-pid="62" data-report-view="{"mod":"kp_popu_62-623","keyword":""}" data-report-click="{"mod":"kp_popu_62-623","keyword":""}"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u3600849",
container: s
});
})();
图像去噪及Matlab实现
01-06 阅读数 3万+
图像去噪常用方法图像去噪处理方法可分为空间域法和变换域法两大类。基于离散余弦变换的图像去噪一般而言,我们认为图像的噪声在离散余弦变换结果中处在其高频部分,而高频部分的幅值一般很小,利用这一性质,就可以... 博文 来自: Joey's Blog
卡尔曼滤波及MATLAB程序
08-24 阅读数 4387
转载 张文宇的博客 https://blog.csdn.net/zhangwenyu111/article/details/17034813卡尔曼滤波是一个很常用的滤波算法,与维纳滤波相比有很多长处... 博文 来自: MALSIS的博客
基于matlab仿真对卡尔曼滤波的理解
12-22 阅读数 5280
clearclc;N=200;t=1:N;w=randn(1,N);%噪声wx(1)=0;fori=2:Nx(i)=x(i-1)+w(i-1);endsubplot(311);plot(t,x);%输... 博文 来自: 一颗偏执的心
Matlab 实现 卡尔曼滤波(Kalman filtering)
05-10 阅读数 4749
一、卡尔曼滤波器核心的5个公式 二、实现效果 三、源码%==============Kalmanfiltering================clear;... 博文 来自: Tiger_v的博客
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/renzhu2007/3111646","strategy":"BlogCommendFromBaidu","index":"23"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/renzhu2007/3111646","strategy":"BlogCommendFromBaidu","index":"23"}">
<a href="https://download.csdn.net/download/renzhu2007/3111646" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
姿态确定的扩展<em>卡尔曼滤波</em>Matlab </h4>
<span class="data float-right">03-21</span>
</div>
<div class="desc oneline">
在姿态确定的四元数方程基础上,采用扩展卡尔曼滤波 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_63" data-pid="63" data-report-view="{"mod":"kp_popu_63-1405","keyword":""}" data-report-click="{"mod":"kp_popu_63-1405","keyword":""}"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u4221910",
container: s
});
})();
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_38490273/10296005","strategy":"BlogCommendFromBaidu","index":"24"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/qq_38490273/10296005","strategy":"BlogCommendFromBaidu","index":"24"}">
<a href="https://download.csdn.net/download/qq_38490273/10296005" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>MATLAB代码 </h4>
<span class="data float-right">03-19</span>
</div>
<div class="desc oneline">
国外学者的开源卡尔曼滤波MATLAB代码,备注详细,可以用于目标跟踪基础学习 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/master03/10337780","strategy":"BlogCommendFromBaidu","index":"25"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/master03/10337780","strategy":"BlogCommendFromBaidu","index":"25"}">
<a href="https://download.csdn.net/download/master03/10337780" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
经典<em>卡尔曼滤波</em> 目标跟踪 matlab 程序注释详细 新手入门 </h4>
<span class="data float-right">04-10</span>
</div>
<div class="desc oneline">
经典卡尔曼滤波 目标跟踪 程序注释详细 新手入门 matlab 程序无bug 完美运行 重要的事情说三遍!包教包会 包教包会 包教包会! </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/linhaiyan927/1791062","strategy":"BlogCommendFromBaidu","index":"26"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/linhaiyan927/1791062","strategy":"BlogCommendFromBaidu","index":"26"}">
<a href="https://download.csdn.net/download/linhaiyan927/1791062" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>器MATLAB编程实现 </h4>
<span class="data float-right">11-03</span>
</div>
<div class="desc oneline">
矢量卡尔曼滤波器的MATLAB编程实现 利用卡尔曼滤波器实现去噪功能 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
基于红外图像的弱小目标检测与跟踪
01-06 阅读数 7856
红外弱小目标的检测与跟踪算法主要分为两类:跟踪前检测DBT和检测前跟踪TBD。经典的小目标检测与跟踪方法是DBT,即先根据检测概率和虚警概率计算单帧图像的检测门限,然后对每帧图像进行分割,并将目标的单... 博文 来自: Joey's Blog
《卡尔曼滤波原理及应用-MATLAB仿真》程序-3.3
11-23 阅读数 2266
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Kalman滤波在船舶GPS导航定位系统中的应用%详... 博文 来自: 小凡的专栏
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_64" data-pid="64" data-report-view="{"mod":"kp_popu_64-1379","keyword":""}" data-report-click="{"mod":"kp_popu_64-1379","keyword":""}"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u4221811",
container: s
});
})();
卡尔曼滤波及Matlab实现
08-07 阅读数 3847
卡尔曼滤波原理浅析一、什么是卡尔曼滤波 滤波是从信号中提取有用信息的过程,比如从电信号中提取有用的频谱分量,从观测到的物体轨迹中提取位置信息,滤除图像信号中的噪声等。卡尔曼滤波是一种有效的滤波方法。如... 博文 来自: qq_33286988的博客
卡尔曼滤波MATLAB代码实现
10-20 阅读数 461
没有大量的公式推导,个人感觉也没有必要,我们从小推导过很多公式,试着想想我们还能回忆起几个?个人认为只需要记住公式的用法,作用,知道有这个公式就可以。用的时候我们可以随时去查。所以楼主参考网上资料结合... 博文 来自: 努力奋斗的小菜鸟的博客
卡尔曼滤波和matlab实现
03-18 阅读数 1万+
转自点击打开链接卡尔曼滤波器算法(TheKalmanFilterAlgorithm)在这一部分,我们就来描述源于DrKalman的卡尔曼滤波器。下面的描述,会涉及一些基本的概念知识,包括概率(Prob... 博文 来自: 有梦想的蜗牛
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/u011254129/10243082","strategy":"BlogCommendFromBaidu","index":"32"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/u011254129/10243082","strategy":"BlogCommendFromBaidu","index":"32"}">
<a href="https://download.csdn.net/download/u011254129/10243082" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>工具箱 </h4>
<span class="data float-right">02-06</span>
</div>
<div class="desc oneline">
matlab的卡尔曼工具箱,利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/u014731502/7197251","strategy":"BlogCommendFromBaidu","index":"33"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/u014731502/7197251","strategy":"BlogCommendFromBaidu","index":"33"}">
<a href="https://download.csdn.net/download/u014731502/7197251" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>与<em>matlab实现</em> </h4>
<span class="data float-right">04-15</span>
</div>
<div class="desc oneline">
卡尔曼滤波入门,一个典型例子,并有matlab代码,适合新手 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_65" data-pid="65" data-report-view="{"mod":"kp_popu_65-1378","keyword":""}" data-report-click="{"mod":"kp_popu_65-1378","keyword":""}"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u4221803",
container: s
});
})();
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/hobbyjobs/9921989","strategy":"BlogCommendFromBaidu","index":"34"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/hobbyjobs/9921989","strategy":"BlogCommendFromBaidu","index":"34"}">
<a href="https://download.csdn.net/download/hobbyjobs/9921989" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>原理及<em>应用</em> matlab仿真 </h4>
<span class="data float-right">08-05</span>
</div>
<div class="desc oneline">
卡尔曼滤波原理及应用 matlab仿真 黄小平,完整pdf外加matlab源码,很多地方都只提供部分内容 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/ysudykx/10041138","strategy":"BlogCommendFromBaidu","index":"35"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/ysudykx/10041138","strategy":"BlogCommendFromBaidu","index":"35"}">
<a href="https://download.csdn.net/download/ysudykx/10041138" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>卡尔曼滤波</em>算法MATLAB仿真 </h4>
<span class="data float-right">10-26</span>
</div>
<div class="desc oneline">
离散卡尔曼滤波算法MATLAB仿真,带有详细注释,有联系方式可以交流。 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
卡尔曼滤波 - - 附C++程序
03-12 阅读数 4160
写博客记录下做过的工作,毕竟好记性不如烂笔头。 卡尔曼滤波算法的博客很多,白巧克力亦唯心http://blog.csdn.net/heyijia0327的阐述应该是较为通... 博文 来自: 您的编程如已上线
MATLAB实现卡尔曼滤波器(KF、EKF)
05-04 阅读数 1万+
卡尔曼滤波器 卡尔曼滤波器是一个”optimalrecursivedataprocessingalgorithm”(最优化自回归数据处理算法)。先说一个例子: 假设我们要研究的对象是一个房... 博文 来自: 知行流浪
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_66" data-pid="66" data-report-view="{"mod":"kp_popu_66-87","keyword":""}" data-report-click="{"mod":"kp_popu_66-87","keyword":""}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1566442796700_717" id="QIHOO__WEB__SO__1566442796700_717" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1566442796700_717-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1566442796700_717 singleImage clk" data-href="https://s3.nzbdw.com/s?type=2&r=20&mv_ref=blog.csdn.net&enup=CAABPZZFTQgAAk1Flj0A&mvid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&bid=138b26aa9a90a369&price=AAAAAF1eBSoAAAAAAAfbqX6fMz8zM1GYn146iA==&finfo=DAABCAABAAAAYQgAAgAAAC0EAAM/YO9ms67EtQAIAAIAAAADCgADTvwAarR6HTYIAAQAAAAvBgAGLbcGAAoAAAYADD64CAAOAAAAHQoADwAAAAAAEHrCAA&ugi=FcTgigEVyNtrTBUCFc4EFdoEFQAAFeGl/PUIFoQIFcgBFoD64KT8qsgFHBaNy7+FvZqH/8wBFQAAAA&uai=FeTGlAIlAhUEFoCo1s20jvf7nQEV8ggllOq16A0lABUaFAAcFuPHo72Kx6qTzgEVAAAA&ubi=FY7hQxW8lu8CFYyP+RgVzpmKXBUEFRwWsN6Y3BYWgKiAnMiagPydATQEFrDgkIAIJQYVjcSC6QsVwgUVADaW7ra7hIyXkPUBAA&clickid=0&cpx=__OFFSET_X__&cpy=__OFFSET_Y__&cs=__EVENT_TIME_START__&ce=__EVENT_TIME_END__&csign2=kUBAKWT_R5o=&url=http%3A%2F%2Fmuscdlb.bceapp.com%2F2010xls%2Fm2%2F" data-pv="https://s3.nzbdw.com/s?type=1&r=20&tid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&finfo=DAABCAABAAAAYQgAAgAAAC0EAAM/YO9ms67EtQAIAAIAAAADCgADTvwAarR6HTYIAAQAAAAvBgAGLbcGAAoAAAYADD64CAAOAAAAHQoADwAAAAAAEHrCAA&mv_ref=blog.csdn.net&enup=CAABPZZFTQgAAk1Flj0A&mvid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&bid=138b26aa9a90a369&ugi=FcTgigEVyNtrTBUCFc4EFdoEFQAAFeGl/PUIFoQIFcgBFoD64KT8qsgFHBaNy7+FvZqH/8wBFQAAAA&uai=FeTGlAIlAhUEFoCo1s20jvf7nQEV8ggllOq16A0lABUaFAAcFuPHo72Kx6qTzgEVAAAA&ubi=FY7hQxW8lu8CFYyP+RgVzpmKXBUEFRwWsN6Y3BYWgKiAnMiagPydATQEFrDgkIAIJQYVjcSC6QsVwgUVADaW7ra7hIyXkPUBAA&ds=2&price=AAAAAF1eBSoAAAAAAAfbqX6fMz8zM1GYn146iA==,https://max-l.mediav.com/rtb?type=2&ver=1&v=CGQSEDEzOGIyNmFhOWE5MGEzNjkYsqOKASCisEUoAmIXNzQyMDc0MDQyMTMwNTEyMjQwMjAwMTmIAQA&k=XPdRDAAAAAA=&w=AAAAAF1eBSoAAAAAAAfb4Gmmo-NlSscYeW0g3A&i=5zwvYcy7TDh0&exp=BQBECgBEAQJEBAJEEABDIgBD&z=1" data-clk="https://max-l.mediav.com/rtb?type=3&ver=1&v=CGQSEDEzOGIyNmFhOWE5MGEzNjkYsqOKASCisEUoAmIXNzQyMDc0MDQyMTMwNTEyMjQwMjAwMTlwAA&k=1tSj6gAAAAA=&i=5zwvYcy7TDh0&exp=BQBECgBEAQJEBAJEEABDIgBD&x=__OFFSET_X__&y=__OFFSET_Y__&st=__EVENT_TIME_START__&et=__EVENT_TIME_END__&adw=__ADSPACE_W__&adh=__ADSPACE_H__&tc=&turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.nzwgs.com/galileo/bfddcc01e23433460023d950b9c7911d.gif)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">空姐说:99元体验男朋友轻松延长40分钟,多吃它,你也行!</info-div>
<info-div class="singleImage-desc">梦雨 · 猎媒</info-div>
</info-div>
Qt双击表格获取表格内容
08-06 阅读数 630
1.调用函数ui->userTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//设置选择行为,以行为单位ui->use... 博文 来自: Joey's Blog
【教程】“视频教程:卡尔曼滤波器的原理以及在MATLAB中的实现”原代码在matlab下不显示曲线的解决办法
05-13 阅读数 825
一、先看原视频教程来源:原博客地址(@山猫小队长): 视频地址整理:优酷:http://v.youku.com/v_show/id_XNzQwMTMwOTQ0.htmlB站:https://www.b... 博文 来自: 柠檬很酸的博客
卡尔曼滤波的理解以及matlab代码实现——《概率机器人》总结
06-04 阅读数 65
前言:笔者正在学习《概率机器人》这本神书,全书贯穿卡尔曼滤波的理念,把自己的浅显理解写在这里,跟大家一起学习讨论。 卡尔曼率滤波的爸爸——贝叶斯滤波 网上关于卡尔曼滤波的博客有很多,写的也都十分详细,... 博文 来自: 请叫我少爷的博客
matlab 实现语音增强(含维纳滤波、谱减法、卡尔曼滤波三种实现方法)下载
有完整的代码注释,三种方法都可以实现,并有demo音频。 相关下载链接://download.csdn.net/download/everock/10424395?utm_source=bbsseo 论坛
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/bbluce99/1949738","strategy":"BlogCommendFromBaidu","index":"43"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/bbluce99/1949738","strategy":"BlogCommendFromBaidu","index":"43"}">
<a href="https://download.csdn.net/download/bbluce99/1949738" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
kalman滤波、平滑和预测 MATLAB程序 </h4>
<span class="data float-right">12-30</span>
</div>
<div class="desc oneline">
编的很完善的kalman滤波、平滑以及预测MATLAB程序。希望对大家有用,尤其是在校大学生。 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_67" data-pid="67" data-report-view="{"mod":"kp_popu_67-658","keyword":""}" data-report-click="{"mod":"kp_popu_67-658","keyword":""}"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u3573058",
container: s
});
})();
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/Inuyasha19/2035348","strategy":"BlogCommendFromBaidu","index":"44"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/Inuyasha19/2035348","strategy":"BlogCommendFromBaidu","index":"44"}">
<a href="https://download.csdn.net/download/Inuyasha19/2035348" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
基于<em>卡尔曼滤波</em>的目标跟踪matlab经典程序——快速入门 </h4>
<span class="data float-right">01-30</span>
</div>
<div class="desc oneline">
基于卡尔曼滤波的目标跟踪经典程序,用于2维目标的跟踪,是初学者学习卡尔曼滤波的好教程。深入浅出,易于理解。 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
CMakeLists编写
06-04 阅读数 36
#ProjectnamePROJECT(test_main)#HeadfilepathINCLUDE_DIRECTORIES( include)#Sourcedirectory:src/AUX_SOU... 博文 来自: Joey's Blog
学习OpenCV2——卡尔曼滤波(KalmanFilter)详解
03-16 阅读数 3万+
本文将简要回顾一下卡尔曼滤波理论,然后详细介绍如何在OpenCV中使用卡尔曼滤波进行跟踪,最后给两个程序实例。... 博文 来自: Markala的博客
kalman 滤波器及其MATLAB实现
11-11 阅读数 9810
卡尔曼滤波是一个很常用的滤波算法,与维纳滤波相比有很多长处。这里我们把KalmanFilter简称为KF。KF的基本思想是:采用信号、噪声、状态空间模型,利用前一时刻的状态最优估计值及其误差方差估计和... 博文 来自: 天才樱木
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_68" data-pid="68" data-report-view="{"mod":"kp_popu_68-625","keyword":""}" data-report-click="{"mod":"kp_popu_68-625","keyword":""}"><div style="width: 100%;"><span style="display:none;padding-left:0px;"></span><iframe width="852" frameborder="0" height="60" scrolling="no" src="https://pos.baidu.com/s?hei=60&wid=852&di=u3565460&ltu=https%3A%2F%2Fblog.csdn.net%2Fzhangquan2015%2Farticle%2Fdetails%2F79264540&psi=1f283c47c9792b12ed499c54965f226d&tlm=1566442796&chi=1&dai=8&pcs=1858x920&dis=0&par=1920x1040&drs=1&ti=%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2%E5%BA%94%E7%94%A8%E5%8F%8A%E5%85%B6matlab%E5%AE%9E%E7%8E%B0&ltr=https%3A%2F%2Fblog.csdn.net%2FAsc11_%2Farticle%2Fdetails%2F40714239&cfv=0&exps=111000,118009,110011&cpl=4&tcn=1566442797&dri=0&cdo=-1&cmi=6&tpr=1566442796618&ccd=24&pis=-1x-1&cce=true&cec=UTF-8&col=zh-CN&dtm=HTML_POST&dc=3&psr=1920x1080&ps=47205x580&pss=1858x47259&ant=0&cja=false&prot=2&ari=2"></iframe></div><script type="text/javascript" src="//rabc1.iteye.com/common/openjs/m022.js?hcuzbzy=bi"></script></div></div>
OpenCV学习之图像尺寸变换
07-30 阅读数 204
#include"cv.h"#include"highgui.h"//尺寸变换IplImage*doPyrDown(IplImage*in,intfilter=IPL_GAUSSIAN_5x5)//(... 博文 来自: Joey's Blog
<div class="recommend-loading-box">
<img src="https://csdnimg.cn/release/phoenix/images/feedLoading.gif">
</div>
<div class="recommend-end-box" style="display: block;">
<p class="text-center">没有更多推荐了,<a href="https://blog.csdn.net/" class="c-blue c-blue-hover c-blue-focus">返回首页</a></p>
</div>
</div>
</main>