JPDA的matlab程序.doc

上传人:聆听****声音 文档编号:718773 上传时间:2023-04-29 格式:DOC 页数:11 大小:80.50KB
下载 相关 举报
JPDA的matlab程序.doc_第1页
第1页 / 共11页
JPDA的matlab程序.doc_第2页
第2页 / 共11页
JPDA的matlab程序.doc_第3页
第3页 / 共11页
JPDA的matlab程序.doc_第4页
第4页 / 共11页
JPDA的matlab程序.doc_第5页
第5页 / 共11页
JPDA的matlab程序.doc_第6页
第6页 / 共11页
JPDA的matlab程序.doc_第7页
第7页 / 共11页
JPDA的matlab程序.doc_第8页
第8页 / 共11页
JPDA的matlab程序.doc_第9页
第9页 / 共11页
JPDA的matlab程序.doc_第10页
第10页 / 共11页
JPDA的matlab程序.doc_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JPDA的matlab程序.doc

《JPDA的matlab程序.doc》由会员分享,可在线阅读,更多相关《JPDA的matlab程序.doc(11页珍藏版)》请在冰点文库上搜索。

JPDA的matlab程序.doc

functionJPDAF(target_position,n,T,MC_number,c)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%程序功能:

采用JPDA数据关联算法实现两个个匀速运动目标的点迹与航迹的关联

%输入变量:

%-target_position:

目标的初始位置

%-n:

采样次数

%-T:

采样间隔

%-MC_number:

仿真次数

%-c:

目标个数

%输出变量:

%无

%参考文献:

%黄玲,数据挖掘及融合技术研究与应用,西北工业大学硕士学位论文,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;

P(:

:

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);

fori=1:

n

a(i)=data_measurement1(1,1,i);

b(i)=data_measurement1(1,3,i);

end

plot(a,b,'b-');

holdon;

a=zeros(1,n);

b=zeros(1,n);

fori=1:

n

a(i)=data_measurement1(2,1,i);

b(i)=data_measurement1(2,3,i);

end

plot(a,b,'r-');

xlabel('x(m)'),ylabel('y(m)');

legend('目标a的实际位置','目标b的实际位置',1);

grid;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%程序主体

%%%%%%%%%%%%%%%%%%%%%%

forM=1:

MC_number

%%%%%%%%%%%%%%%%%%%%%%%1.产生路径%%%%%%%%%%%%%%%%%%%%%%%

Noise=[];

fori=1:

n

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);

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%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:

n

y1=[];

y=[];

Noise=[];

NOISE=[];

fori=1:

c

ift~=1

x_predic(:

i)=A*x_filter(:

i,t-1);%用前一时刻的滤波值来预测当前的值(kalman滤波的第一个表达式)

else

x_predic(:

i)=target_position(i,:

)';%第一次采样我们用真实位置当预测值

end

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);%椭圆跟踪门内的错误回波数

side=sqrt((ellipse_Volume(i)*gamma+1)/gamma)/2;%将椭圆跟踪门等效为正方形,并求出正方形边长的二分之一

Noise_x=x_predic(1,i)+side-2*rand(1,number_returns)*side;

%在预测值周围产生多余回波。

注意:

当某一次number_returns小于等于0时会出错,再运行一次即可。

Noise_y=x_predic(3,i)+side-2*rand(1,number_returns)*side;

Noise=[Noise_x;Noise_y];

NOISE=[NOISENoise];

ifi==1

NOISE_sum_a=[NOISE_sum_aNoise];

else

NOISE_sum_b=[NOISE_sum_bNoise];

end

end

b=zeros(1,2);

b

(1)=data_measurement(1,1,t);

b

(2)=data_measurement(1,2,t);

y1=[NOISEb'];%将接收到的所有的回波存在y1中,包括杂波和观测

b

(1)=data_measurement(2,1,t);

b

(2)=data_measurement(2,2,t);

y1=[y1b'];%当有一个杂波回波时3.产生观测确认矩阵Q2%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

m1=0;%记录有效观测个数

[n1,n2]=size(y1);

Q1=zeros(100,3);

forj=1:

n2

flag=0;

fori=1:

c

d=y1(:

j)-Z_predic(:

i);

D=d'*inv(S(:

:

i))*d;

ifD<=g_sigma

flag=1;

Q1(m1+1,1)=1;

Q1(m1+1,i+1)=1;

end

end

ifflag==1

y=[yy1(:

j)];%把落入跟踪门中的所有回波放入y中

m1=m1+1;%记录有效观测个数

end

end

Q2=Q1(1:

m1,1:

3);

%%%%%%%%%%%%%%%4.产生互联矩阵A_matrix,其中num表示可行联合事件个数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%A_matrix=zeros(m1,3,10000);

A_matrix(:

1,1:

10000)=1;

ifm1~=0%m1=0表示两个目标都没有观测

num=1;

fori=1:

m1

ifQ2(i,2)==1

A_matrix(i,2,num)=1;A_matrix(i,1,num)=0;

num=num+1;

forj=1:

m1

if(i~=j)&(Q2(j,3)==1)

A_matrix(i,2,num)=1;A_matrix(i,1,num)=0;

A_matrix(j,3,num)=1;A_matrix(j,1,num)=0;

num=num+1;

end

end

end

end

fori=1:

m1

ifQ2(i,3)==1

A_matrix(i,3,num)=1;A_matrix(i,1,num)=0;

num=num+1;

end

end

else

flag=1;

end

A_matrix=A_matrix(:

:

1:

num);%穷举法拆分的结果存在A_matrix中

%5.计算后验概率Pr,其中False_num表示假量测,mea_indicator表示观测指示器,target_indicator表示目标指示器%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pr=zeros(1,num);

fori=1:

num

False_num=m1;

N=1;

forj=1:

m1

mea_indicator=sum(A_matrix(j,2:

3,i));%参考文献中式4-48

ifmea_indicator==1

False_num=False_num-1;

ifA_matrix(j,2,i)==1%如果观测与目标1关联

b=(y(:

j)-Z_predic(:

1))'*inv(S(:

:

1))*(y(:

j)-Z_predic(:

1));

N=N/sqrt(det(2*pi*S(:

:

1)))*exp(-1/2*b);%计算正态分布函数

else%如果观测与目标2关联

b=(y(:

j)-Z_predic(:

2))'*inv(S(:

:

2))*(y(:

j)-Z_predic(:

2));

N=N/sqrt(det(2*pi*S(:

:

2)))*exp(-1/2*b);%计算正态分布函数

end

end

end

ifPd==1

a=1;

else

a=1;

forj=1:

c

target_indicator=sum(A_matrix(:

j+1,i));%参考文献中式4-49

a=a*Pd^target_indicator*(1-Pd)^(1-target_indicator);%计算检测概率

end

end

V=ellipse_Volume

(1)+ellipse_Volume

(2);%表示整个空域的体积

a1=1;

forj=1:

False_num

a1=a1*j;

end

Pr(i)=N*a*a1/(V^False_num);

end

Pr=Pr/sum(Pr);

%%%%%%%%%%%%%%%%%%6.计算关联概率U%%%%%%%%%%%%%%%%%%%%%%%%%%%

U=zeros(m1+1,c);

fori=1:

c

forj=1:

m1

fork=1:

num

U(j,i)=U(j,i)+Pr(k)*A_matrix(j,i+1,k);

end

end

end

U(m1+1,:

)=1-sum(U(1:

m1,1:

c));%无量测与目标T互联的关联概率存入U(m1+1,:

),规一化

%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%7.Kalman滤波开始%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%

fori=1:

c%更新协方差矩阵

P_predic=A*P(:

:

i)*A'+G*Q*G';

K(:

:

i)=P_predic*C'*inv(S(:

:

i));

P(:

:

i)=P_predic-(1-U(m1+1,i))*K(:

:

i)*S(:

:

i)*K(:

:

i)';

end

fori=1:

c

a=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2