⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 track_init.m

📁 基于纯角度信息的采用逻辑规则和简单方法的航迹起始仿真程序
💻 M
字号:
function [TrackNumber,Track,NewCandidateNumber,NewCandidate,NewCandidateStatusIndex,NewCandidate_symbol]=track_init(pointNum,isoPoint,CandidateNumber,Candidate,CandidateStatusIndex,Candidate_symbol);
% 本函数做航迹起始,其中pointnum是每个周期未关联的孤立点迹从而送给航迹起始程序的个数
%  isopoint孤立点迹的具体信息(每个点迹占一行,其中的第一列为方位角,第二列为俯仰角)
% TrackNumber是具体航迹起始后疑似航迹的个数
% Track是具体的疑似航迹库,是三维数组,页-代表航迹,行-代表不同周期的点迹信息(第一行是最新时刻,以此类推),列-方位角、俯仰角
% CandidateNumber侯选航迹库中的侯选航迹数量,CandidateNumber侯选航迹库
% Candidate_symbol启发式规则和基于逻辑方法航迹库的标识位,0代表启发式规则航迹库,1代表基于逻辑方法航迹库...
% 2代表基于逻辑方法三点外推五点航迹库,3代表已被报出的疑似航迹
% CandidateStatusIndex 候选航迹的点迹个数


% NewCandidateNumber,NewCandidate,NewCandidateStatusIndex,NewCandidate_sy%
% mbol都是中间变量,是存储扩展新航迹库的,最后通过函数返回值将值传给候选航迹库


%启发式规则的航迹起始
%代入全局参数:
% CandidateNumber侯选航迹数量
% Candidate(:,:,:)侯选航迹库,页:侯选航迹,行:点迹,列:方位、俯仰角
% CandidateStatusIndex( )侯选航迹库航迹状态索引(侯选航迹中的点迹数目)
% pointNum(k)孤立点迹数量
% k扫描序号
Track=[],TrackNumber=0;
stagate = 25;        %方位角关联门大小
faigate = 25;        %俯仰角关联门大小
NewCandidateNumber = 0;     %新侯选航迹库中的侯选航迹数量
NewCandidate = zeros(0);    %新侯选航迹库
NewCandidate(4,2,1) = 0;
NewCandidateStatusIndex=zeros(0);   %新侯选航迹库航迹状态索引
pointasssign=zeros(1,pointNum);   %点迹关联标志,未关联为0,反之为1
v=0;         %暂存NewCandidateNumber
InvalidTrack = [ 999,999;999,999;999,999;999,999; 999,999];
NewCandidate_symbol=[]
for i = 1:1:CandidateNumber %扫描所有的侯选航迹
if Candidate_symbol(i)~=3
    if Candidate_symbol(i)==0
    for j = 1:1:pointNum  %扫描所有的孤立点迹
              if abs( Candidate(1,1,i) - isoPoint(j,1) ) < stagate
        %第i条侯选航迹第一个点迹方位sta角Candidate(1,1,i)与第k次扫描的第j个量测的方位角isoPoint(j,1,k)
              if abs( Candidate(1,2,i) - isoPoint(j,2) ) < faigate
            %第i条侯选航迹第一个点迹俯仰fai角Candidate(1,2,i)与第k次扫描的第j个量测的俯仰角isoPoint(j,2,k)
                %---------符合关联条件---------
                NewCandidateNumber = NewCandidateNumber + 1;    %新侯选航迹库中航迹数量加1
                NewCandidate_symbol(NewCandidateNumber)=0
                for m = 1:1:3
                    NewCandidate(5-m,:,NewCandidateNumber) = Candidate(4-m,:,i);
                end
                NewCandidate(1,:,NewCandidateNumber) = isoPoint(j,:);
                NewCandidateStatusIndex(NewCandidateNumber) = CandidateStatusIndex(i)+1;
                pointasssign(j) = 1;    %标志该点迹已被关联
                %-------------------------------
            end
        end
    end
end  
%判断是否第i个航迹要被启发式规则的方法中止,如果中止转到基于逻辑的方法判断
          
              if  NewCandidateNumber ==v
                  logicinit       % 如果没有被启发式规则起始,转到基于逻辑起始    
             else  v=NewCandidateNumber  % 否则纪录基于启发式规则发现的候选航迹的数目
              end
    else  logicinit
  end   %开始判断下一个航迹
end


%未被关联点迹作为航迹头加入新侯选航迹库
for i = 1:1:pointNum
    if pointasssign(i) == 0
        NewCandidateNumber = NewCandidateNumber + 1;    %新侯选航迹库中航迹数量加1
        NewCandidate(1,:,NewCandidateNumber) = isoPoint(i,:);     %添加航迹头
        NewCandidateStatusIndex(NewCandidateNumber) = 1;                %新航迹状态索引,1-一个点迹
        NewCandidate_symbol(NewCandidateNumber)=0;
    end
end


for kk = 1:1:NewCandidateNumber
        if NewCandidateStatusIndex(kk) >= 3 & NewCandidate_symbol(kk)==0
            TrackNumber = TrackNumber + 1;
            Track(:,:,TrackNumber) = NewCandidate(:,:,kk);
            NewCandidate(:,:,kk) = InvalidTrack;
            NewCandidate_symbol(kk)=3
          plot(Track(1:3,1,TrackNumber),Track(1:3,2,TrackNumber),'or-');
          hold on
        elseif NewCandidateStatusIndex(kk) >= 4 & NewCandidate_symbol(kk)~=0
            TrackNumber = TrackNumber + 1;
            Track(:,:,TrackNumber) = NewCandidate(:,:,kk);
            NewCandidate(:,:,kk) = InvalidTrack;
            NewCandidate_symbol(kk)=3
         plot(Track(1:4,1,TrackNumber),Track(1:4,2,TrackNumber),'og-');
         hold on
        end
    end
    xlabel('目标方位角   单位 mrad');
    ylabel('目标俯仰角   单位 mrad');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -