1 简介
AIS船舶自动识别系统能提供精确的船舶位置与属性信息,通过信息融合技术能有效弥补雷达测向精度不高的影响。为了对更大范围内的海域进行监视,本文对升空AIS与雷达信息融合技术进行了研究,以提高平台对海的跟踪探测能力。本文主要涉及的工作:1、对升空平台AIS系统出现的问题进行研究。本文介绍了AIS系统的工作原理与SOTDMA协议过程,分析了升空AIS监视范围与出现信号冲突的问题,并且根据信号区别接收原理得到了时隙冲突、检测容量与发现概率之间的关系。分析分区域接收提高发现概率的可行性,并在matlab下仿真验证。2、通过对AIS数据报的编解码原理进行学习,分析了AIS主要的数据报文类型,并且通过软件实现AIS数据包的解析,并在电子海图上显示,为融合中心利用AIS信息提供支撑。3、本文基于信息融合系统的理论知识,分析了数据融合的模型与基本过程。利用拟合的航向信息对航迹平滑,提升海面目标航迹质量。在不同的测量噪声环境下,从插值精度与算法耗时方面仿真对比分析了最小二乘与拉格朗日插值方法的优缺点。推导存在测量噪声的基于AIS的三维空间配准算法,利用kalman滤波对系统误差进行估计,仿真分析了该算法配准精度与收敛速度。提出了基于DS理论的灰色航迹关联方法,该方法通过利用冗余的历史数据的组合证据进行判决,提高了正确关联概率。通过将其与统计双门限、模糊双门限关联算法在正确关联率、运行效率、适用环境等方面进行对比,为操作员选择算法提供参考。





2 部分代码
function [gmm,variance,likelihood,isactive] = PHD_update(gmm,z,isactive,cst)% PHD_UPDATE executes the update step of a GM-PHD filter on a given% Gaussian Mixture.%% IN gmm input mixture% cst the constant structure%% OUT gmm updated mixture%% AUTHOR Isabel Schlangen, (c) 2016Nmeas = size(z,1); % number of measurementsactive_pred = find(isactive); % collect all componentsgmmtable = repmat(gmm(active_pred),1,Nmeas);%% update all active componentsnormtable = cst.pFA*ones(Nmeas,1);% ASSOCIATIONSfor jj=1:Nmeasfor ii=1:length(active_pred)% innovation:y = z(jj,:)'-cst.H*gmm(active_pred(ii)).m;S = cst.H * gmm(active_pred(ii)).C * cst.H' + cst.R;% Kalman gain:K = (gmm(active_pred(ii)).C * cst.H')/S;gate = y'/S*y;% discard the combination if we want gating and m is outside of the% threshold around z:if ~(cst.gating && gate>cst.tgate)if cst.Nz == 2detS = S(1,1)*S(2,2)-S(2,1)*S(1,2);elsedetS = det(S);endq = exp(-0.5 * gate)/sqrt((2*pi)^(cst.Nz)*abs(detS));%update the Gaussian:gmmtable(ii,jj).w = q * cst.pD * gmm(active_pred(ii)).w;gmmtable(ii,jj).m = gmm(active_pred(ii)).m + K*y;gmmtable(ii,jj).C = (eye(cst.Nx)-K*cst.H) * gmm(active_pred(ii)).C;gmmtable(ii,jj).i = 1;elsegmmtable(ii,jj).w = 0;gmmtable(ii,jj).i = 0;endend% normalise per measurementnormtable(jj) = cst.pFA + sum([gmmtable(:,jj).w]);for ii=1:length(active_pred)gmmtable(ii,jj).w = gmmtable(ii,jj).w/normtable(jj);if gmmtable(ii,jj).w > 1keyboard;endendendif sum(sum([gmmtable(:).w]))>Nmeaskeyboard;end% MISSED DETECTIONSmol_mdterm = 0;for ii=active_predmol_mdterm = mol_mdterm + cst.pD*gmm(ii).w; %for the likelihoodgmm(ii).w = (1-cst.pD)*gmm(ii).w; %for weight updateendlikelihood = exp(-mol_mdterm)*prod(normtable);%% varianceallweights = zeros(size(gmmtable));for ii=1:size(gmmtable,1)allweights(ii,:) = [gmmtable(ii,:).w];endvariance = sum([gmm(ii).w]) + sum(sum(allweights.*(1-allweights)));%% save all components that are still active for the next iterationinactive = find(~isactive); % collect indices of free space in gmmactivateind = 0;for ii=1:length(active_pred)for jj=1:Nmeasif gmmtable(ii,jj).w > cst.pruning*cst.tpruneactivateind = activateind+1;if activateind>length(inactive)error('Maximum number of Gauss components reached.\n');endgmm(inactive(activateind)) = gmmtable(ii,jj);isactive(inactive(activateind)) = 1;endendend%% Pruningactive_up = find(isactive);prunedweights = 0;for ii=active_upif gmm(ii).w<cst.pruning*cst.tpruneprunedweights = prunedweights + gmm(ii).w;gmm(ii).w = 0;gmm(ii).i = 0;isactive(ii) = 0;endendactive_pruned = find(isactive);ncomp = length(active_pruned);for ii=active_prunedgmm(ii).w = gmm(ii).w + prunedweights/ncomp;end% fprintf('MD: %g AS: %g, pruned:%g, total:%g\n',sum([gmm(active_pred).w]),sum([gmm(setdiff(active_up,active_pred)).w]),prunedweights,sum([gmm([gmm.i]==1).w]));%% Merging[gmm,isactive] = merging(gmm,isactive,cst);% fprintf('total weight after merging: %g\n', sum([gmm([gmm.i]==1).w]));3 仿真结果




4 参考文献
[1]陈芳淮. 升空AIS与雷达航迹信息融合技术研究. Diss. 电子科技大学.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。










