www.gusucode.com > 基于matlab编程雷达目标航迹跟踪源码程序 > 基于matlab编程雷达目标航迹跟踪源码程序/数据处理程序/track_die_out.m

    function  [trust_track,track_data_output,number_of_track] = track_die_out(trust_track ,track_data_output,number_of_track)
%函数功能:航迹消亡
%当未用实点更新次数达到该航迹消亡门限值时,该条航迹消亡,删除该条航迹的所有信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 输入变量 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% trust_track --> 可靠航迹文件,存储已经形成的可靠航迹的新息
% 1-6列:每条航迹最后一个点的滤波信息,1距离,2距离向速度,3方位角,4方位角向速度,5俯仰角,6俯仰角速度
% 7-42列:滤波误差协方差信息,本是一个6*6的矩阵,存成行则变成36列
% 43航迹识别标志,44来/去,45是第几个点,46实点/补点,47属于哪个通道,48航迹未被更新次数,49更新标志0未更新/1更新,50航迹消亡的门限值;
% track_data_output --> 该批次数据处理完毕后,输出的航迹信息,存储输出航迹信息的多行8列矩阵;各列代表含义如下:1距
% 离,2方位角,3俯仰角,4属于第几条航迹,5来/去,6积累时间,7是第几个点,8实点/补点,9属于哪个通道;
% number_of_track  -->  已经形成的可靠航迹数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 输入变量 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 输出变量 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% trust_track --> 可靠航迹文件,存储已经形成的可靠航迹的新息
% 1-6列:每条航迹最后一个点的滤波信息,1距离,2距离向速度,3方位角,4方位角向速度,5俯仰角,6俯仰角速度
% 7-42列:滤波误差协方差信息,本是一个6*6的矩阵,存成行则变成36列
% 43航迹识别标志,44来/去,45是第几个点,46实点/补点,47属于哪个通道,48航迹未被更新次数,49更新标志0未更新/1更新,50航迹消亡的门限值;
% track_data_output --> 该批次数据处理完毕后,输出的航迹信息,存储输出航迹信息的多行9列矩阵;各列代表含义如下:1距
% 离,2方位角,3俯仰角,4属于第几条航迹,5来/去,6积累时间,7是第几个点,8实点/补点,9属于哪个通道;
% number_of_track  -->  已经形成的可靠航迹数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 输出变量 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

index_num_unnew=find(trust_track(:,48) == trust_track(:,50));%找到未用实点更新次数达到该航迹消亡门限值的可靠航迹所在行
index_track=trust_track(index_num_unnew,43);%找到未用实点更新次数达到该航迹消亡门限值的可靠航迹号

temp_num1=size(index_track,1);%要消亡的航迹的数目

for i=1:temp_num1
    track_data_output(find(track_data_output(:,4)==index_track(i)),:)=[];%删除未用实点更新次数达到该航迹门限值的航迹信息
    trust_track(find(trust_track(:,43) == index_track(i)),:) = [];% 删除未用实点更新次数达到该航迹门限值的可靠航迹
    if(index_track(i)<number_of_track)%也就是说,如果要消亡的不是最后一条航迹,需要将航迹号重新赋值
        for cnt_index=index_track(i)+1:number_of_track
            index_move1=find(trust_track(:,43) == cnt_index);
            if(index_move1>0)
                trust_track(index_move1,43)=cnt_index-1;        

                track_data_output(find(track_data_output(:,4)==cnt_index),4)=cnt_index-1; 
            end
        end
    end
end

number_of_track=number_of_track-temp_num1;%剩余航迹的数目