資源簡介
邏輯航跡起始算法源代碼,本代碼已測試通過,
代碼片段和文件信息
clear?all;?clc;?close?all;
warning(‘off‘)
%?掃描次數與掃描周期
N?=?4;
M?=?3;
T?=?5;?%秒
%?所考慮的正方形仿真區域
Xscope?=?10^5;
Yscope?=?10^5;
%?目標運動參數
v?=?350;?????%?500m/s
theta?=?0;???%?水平正x軸運動
sigmax=50;
sigmay=5;
%?距離觀測標準差與方位角觀測標準差
sigma_r?=?40;
sigma_theta?=?0.3;
%?所考慮的正方形仿真區域內的雜波平均數
renbuda?=?100;
%?指定4次掃描的雜波個數,每個周期的數目服從泊松分布,分布的均值由面積大小
%?以及單位面積內雜波數的乘積確定
K?=?poissrnd(renbuda?1?N);
%?限制關聯規則中的最大與最小速度、最大加速度和連續三次掃描的夾角
vmin?=?2*v/3;
vmax?=?3*v/2;
%?amax?=?50;
thetamax?=?90;
%?thetamax?=?pi/2;
%量測方程
H?=?[1?0?0?0;0?0?1?0];
F?=?[1?T?0?0;?0?1?0?0;??0?0?1?T;0?0?0?1];
R?=?[80?0;0?80];
%%?仿真產生5個目標的航跡(量測數據)?%%
radar1?=?simutrack(55000?55000?v?theta?0?0?sigma_r?sigma_theta?T?N);?%4行2列
radar2?=?simutrack(45000?45000?v?theta?0?0?sigma_r?sigma_theta?T?N);
radar3?=?simutrack(35000?35000?v?theta?0?0?sigma_r?sigma_theta?T?N);
radar4?=?simutrack(45000?25000?v?theta?0?0?sigma_r?sigma_theta?T?N);
radar5?=?simutrack(55000?15000?v?theta?0?0?sigma_r?sigma_theta?T?N);
%%?每次掃描所得點跡集合sample中的前5個點被設定為目標點?%%
i?=?0;
for?k?=?K
????i?=?i?+?1;
????cycle(i).sample?=?[rand(k1)*Xscope?rand(k1)*Yscope];???????%cycle為結構體???存儲雜波點
????cycle(i).sample?=?[radar1(i:);?radar2(i:);?radar3(i:);
????????radar4(i:);?radar5(i:);?cycle(i).sample];
end
%%?用第一次掃描的點跡建立暫時航跡?%%
for?i?=?1:size(cycle(1).sample?1)
????track(i).seq?=?cycle(1).sample(i:);
%?????track(i).shouldadd?=?[];
????track(k).assoi_point?=?[];??????%存儲與航跡關聯的點跡的關聯值
end
%%?用第二次掃描的點建立可能航跡?%%
for?i?=?2
????tracknum?=?size(track2);??????%求得暫態航跡數
????tracknum_temp?=?tracknum;
????samplenum?=?size(cycle(i).sample1);?????%求得第二幀的量測點跡數
????
????D?=?zeros(tracknumsamplenum);??????%存儲暫態航跡與量測的關聯值
????%%?計算本次掃描的所有點跡與暫態航跡的關聯值?%%
????for?j?=?1:samplenum
????????data?=?cycle(i).sample(j:);
????????for?k?=?1:tracknum
????????????if?size(track(k).seq1)?>?0
????????????????data1?=?track(k).seq;
????????????????D(kj)?=?(data(1)-data1(1))^2?+?(data(2)-data1(2))^2;
????????????end?????????????????
????????end
????end
????
????for?j?=?1:samplenum
????????flag?=?0;
????????for?k?=?1:tracknum
????????????if?D(kj)?>=?(vmin*T)^2?&&?D(kj)?<=?(vmax*T)^2
????????????????track(k).assoi_point?=?[track(k).assoi_point;D(kj)?j];
????????????????flag?=?1;
????????????end
????????end
????????
????????%%?與暫態航跡未關聯的點跡作為新的暫態航跡頭
????????if?flag?==?0
????????????tracknum_temp?=tracknum_temp?+?1;
????????????
????????????track(tracknum_temp).seq?=?cycle(i).sample(j:);
????????????track(tracknum_temp).assoi_point?=?[];
????????end
????end
????
????%%?由關聯點跡判別,對暫態航跡進行處理?%%
????for?k?=?1:tracknum
????????L?=?size(track(k).assoi_point1);
????????if?L?==?1
????????????j?=?track(k).assoi_point(end2);
????????????track(k).seq?=?[track(k).seq;cycle(i).sample(j:)];
????????end
????????if?L?>?1
????????????min?=?track(k).assoi_point(1:);
????????????for?j?=?2:L
????????????????if?(track(k).assoi_point(j1)?-?(v*T
- 上一篇:線結構光中心提取算法matlab
- 下一篇:多尺度排列熵matlab程序,親測可用
評論
共有 條評論