JPDA的matlab程序Word文件下载.doc
《JPDA的matlab程序Word文件下载.doc》由会员分享,可在线阅读,更多相关《JPDA的matlab程序Word文件下载.doc(11页珍藏版)》请在冰豆网上搜索。
%黄玲,数据挖掘及融合技术研究与应用,西北工业大学硕士学位论文,2004年
%声明:
%该代码为作者毕业设计内容,鉴于学术交流的角度,现在公开发布该代码
%该代码非本人原创,修改自网上另一位作者的JPDA代码
%该代码仅用于学术交流,请勿用于任何其它商业用途,请大家自觉遵守
%如果有人用该代码进行不合适的用途,该代码作者不承担任何责任
%请遵守作者的劳动成果,转载请标明
%作者邮箱:
%wangzexun@
%%%%%%%%%%%%%%%%%%%%%%%%%%参数定义%%%%%
Pd=1;
%检测概率
Pg=0.99;
%正确量测落入跟踪门内得概率
g_sigma=9.21;
%门限
lambda=2;
gamma=lambda*10^(-6);
%每一个单位面积(km^2)内产生lambda个杂波
Target_measurement=zeros(c,2,n);
%目标观测互联存储矩阵
target_delta=[100100];
%目标对应的观测标准差
P=zeros(4,4,c);
%协方差矩阵
P1=[target_delta
(1)^2000;
00.0100;
00target_delta
(1)^20;
0000.01];
%初始协方差矩阵
P(:
:
1)=P1;
2)=P1;
A=[1T00;
0100;
001T;
0001];
%状态转移矩阵
C=[1000;
0010];
%观测矩阵
R=[target_delta
(1)^20;
0target_delta
(1)^2];
%观测协方差矩阵
Q=[40;
04];
%系统过程噪声协方差
G=[T^2/20;
T0;
0T^2/2;
0T];
%过程噪声矩阵
x_filter=zeros(4,c,n);
%存储目标的各时刻的滤波值
x_filter1=zeros(4,c,n,MC_number);
%MC_number次MontleCarlo仿真所得全部结果存储矩阵
data_measurement=zeros(c,2,n);
%观测存储矩阵
data_measurement1=zeros(c,4,n);
%实际位置坐标x,y矩阵
%%%%%%%%产生目标的实际位置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data_measurement1(:
1)=target_position;
%实际位置矩阵初始化
fori=1:
c
forii=2:
n%实际位置
data_measurement1(i,:
ii)=(A*data_measurement1(i,:
ii-1)'
)'
+(G*sqrt(Q)*(randn(2,1)))'
;
end
end
a=zeros(1,n);
b=zeros(1,n);
n
a(i)=data_measurement1(1,1,i);
b(i)=data_measurement1(1,3,i);
plot(a,b,'
b-'
);
holdon;
a(i)=data_measurement1(2,1,i);
b(i)=data_measurement1(2,3,i);
r-'
xlabel('
x(m)'
),ylabel('
y(m)'
legend('
目标a的实际位置'
'
目标b的实际位置'
1);
grid;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%程序主体
%%%%%%%%%%%%%%%%%%%%%%
forM=1:
MC_number
%%%%%%%%%%%%%%%%%%%%%%%1.产生路径%%%%%%%%%%%%%%%%%%%%%%%
Noise=[];
forj=1:
c%各传感器观测的位置
data_measurement(j,1,i)=data_measurement1(j,1,i)+rand
(1)*target_delta(j);
data_measurement(j,2,i)=data_measurement1(j,3,i)+rand
(1)*target_delta(j);
%%%%%%%%%%%%%%%%%%%%%%%%%%2.产生杂波,并确定有效观测%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%
S=zeros(2,2,c);
Z_predic=zeros(2,2);
%存储两个目标的观测预测值,即只包括x,y坐标
x_predic=zeros(4,2);
%存储两个目标的状态预测值,即包括x,y坐标和x,y方向速度
ellipse_Volume=zeros(1,2);
NOISE_sum_a=[];
%存储目标1的杂波
NOISE_sum_b=[];
%存储目标2的杂波
fort=1:
y1=[];
y=[];
Noise=[];
NOISE=[];
fori=1:
c
ift~=1
x_predic(:
i)=A*x_filter(:
i,t-1);
%用前一时刻的滤波值来预测当前的值(kalman滤波的第一个表达式)
else
i)=target_position(i,:
%第一次采样我们用真实位置当预测值
P_predic=A*P(:
i)*A'
+G*Q*G'
%更新x_predic协方差矩阵(kalman滤波的第二个表达式)
Z_predic(:
i)=C*x_predic(:
i);
%提取预测值的x,y坐标,舍弃x,y速度
R=[target_delta(i)^20;
0target_delta(i)^2];
S(:
i)=C*P_predic*C'
+R;
%定义中间变量S
ellipse_Volume(i)=pi*g_sigma*sqrt(det(S(:
i)));
%计算椭圆跟踪门的面积
number_returns=floor(ellipse_Volume(i)*gamma+1);