classdef (Hidden) helperMultiPlatFusionDisplay < matlab.System
% helperMultiPlatFusionDisplay Creates and updates a theaterPlot plot display
%
% This is a helper block for example purposes and may be removed or
% modified in the future.
% Copyright 2018 The MathWorks, Inc.
properties(Dependent, SetAccess=private)
TheaterPlot
end
properties(Nontunable)
AxesUnits = ["km" "km" "km"]
%XLim Minimum and maximum distance in the x-axis
XLim = [-45 45]*1e3
%YLim Minimum and maximum distance in the y-axis
YLim = [-45 45]*1e3
%ZLim Minimum and maximum distance in the z-axis
ZLim = [-45 45]*1e3
end
properties(Nontunable)
DistanceUnits = 'km'
end
properties(Constant, Hidden)
DistanceUnitsSet = matlab.system.StringSet({'m','km'});
end
properties (Nontunable)
%TrackPositionSelector Select x and y from the state vector
% For example, if the state is [x;vx;y;vy;z;vz], [x;y;z] = H * state
% Where H = [1 0 0 0 0 0; 0 0 1 0 0 0; 0 0 0 0 1 0]
TrackPositionSelector = [1 0 0 0 0 0; 0 0 1 0 0 0; 0 0 0 0 1 0];
%TrackVelocitySelector Select vx and vy from the state vector
% For example, if the state is [x;vx;y;vy;z;vz], [vx;vy;vz] = H * state
% Where H = [0 1 0 0 0 0; 0 0 0 1 0 0; 0 0 0 0 0 1]
TrackVelocitySelector = [0 1 0 0 0 0; 0 0 0 1 0 0; 0 0 0 0 0 1];
end
properties
AssignmentMetrics
end
properties (Nontunable)
PlotAssignmentMetrics (1, 1) logical;
end
properties (Hidden, Nontunable)
%GrabFigureFcn Set to a function handle accepting the current
%scenario and returning a figure's children or a cell array of
%children from multiple figures
GrabFigureFcn
%UseGetFrame Set to true to capture frames using getframe(h),
%otherwise set to false to capture frames using print -RGBImage
UseGetFrame (1, 1) logical = true
end
properties(Access=private)
pScale = 1
pScenarioRecording
pFig = NaN
pTheaterPlot
pPlatformPlotters
pTargetPlotter
pPathPlotter
pDetectionPlotters
pCoveragePlotter
pDetectionPlottersRay
pMetricsAxes
pMetricsPlotter
pTrackPlotter
pIsLegendOn
end
methods
function val = get.TheaterPlot(obj)
val = obj.pTheaterPlot;
end
function obj = helperMultiPlatFusionDisplay(scenarioRecording, varargin)
% Constructor
setProperties(obj,numel(varargin),varargin{:});
obj.pScenarioRecording = scenarioRecording;
% Create a new figure
% Hide the figure while we build the theater plot
hfig = figure('Visible','off');
obj.pIsLegendOn = true;
obj.pFig = hfig;
if strcmpi(obj.DistanceUnits,'km')
obj.pScale = 1000;
end
initTP(obj);
hfig.Visible = 'on';
% Resize for best viewing
screenSize = get(0,'ScreenSize');
if screenSize(3)>=1920 % HD or more
set(hfig,'Units','pixels','Position',[100 100 1536 864]); % Pixels
hfig.Units = 'normalized';
else
hfig.Units = 'normalized';
hfig.Position = [0.1 0.1 0.6 0.6];
end
end
function flag = isOpen(obj)
flag = ishghandle(obj.pFig);
end
function close(obj)
if ishghandle(obj.pFig)
close(obj.pFig);
end
end
function snapnow(obj)
set(obj.pFig,'Visible','on');
end
end
methods(Access=protected)
function setupImpl(obj,varargin)
% Update in case anything has changed since display was
% constructed
initTP(obj);
hfig = obj.pFig;
hax = obj.pTheaterPlot.Parent;
[~, ~, tracks] = parseStepInputs(obj, varargin{:});
% Plot tracks
if isstruct(tracks) || isa(tracks,'objectTrack')
trkClr = lines(2); trkClr = trkClr(end,:);
obj.pTrackPlotter = trackPlotter(obj.pTheaterPlot,'DisplayName','Tracks',...
'ConnectHistory','on','ColorizeHistory','on','MarkerFaceColor',trkClr); %'HistoryDepth',30
end
legend(hax,'AutoUpdate','off')
% Keep figure hidden when publishing, to avoid extra snapshots
% in the published example. Use the "snapnow" method to take
% snapshots.
if ~isPublishing()
hfig.Visible = 'on';
end
end
function stepImpl(obj,varargin)
[ dets, coverageConfigs, tracks, assignments, truths, sensPlatID] = parseStepInputs(obj, varargin{:});
plotPlatforms(obj,truths);
if isstruct(coverageConfigs)
plotCoverage(obj, coverageConfigs);
end
if iscell(dets)
plotDetections(obj, dets, coverageConfigs, sensPlatID);
end
if isstruct(tracks) && isfield(tracks,'TrackID') || isa(tracks,'objectTrack') && isprop(tracks(1),'TrackID')
plotTracks(obj, tracks, assignments);
end
if ~isempty(assignments)
plotAssignmentMetrics(obj,assignments);
end
end
function s = saveObjectImpl(obj)
s = saveObjectImpl@matlab.System(obj);
if isLocked(obj)
s.pFig = obj.pFig;
s.pTheaterPlot = obj.pTheaterPlot;
s.pPlatformPlotters = obj.pPlatformPlotters;
s.pTargetPlotter = obj.pTargetPlotter;
s.pDetectionPlotters = obj.pDetectionPlotters;
s.pDetectionPlottersRay = obj.pDetectionPlottersRay;
s.pTrackPlotter = obj.pTrackPlotter;
s.pIsLegendOn = obj.pIsLegendOn;
end
end
function loadObjectImpl(obj,s,wasLocked)
if wasLocked
obj.pFig = s.pFig;
obj.pTheaterPlot = s.pTheaterPlot;
obj.pPlatformPlotters = s.pPlatformPlotters;
obj.pTargetPlotter = s.pTargetPlotter;
obj.pDetectionPlotters = s.pDetectionPlotters;
obj.pDetectionPlottersRay = s.pDetectionPlottersRay;
obj.pTrackPlotter = s.pTrackPlotter;
obj.pIsLegendOn = s.pIsLegendOn;
end
loadObjectImpl@matlab.System(obj,s,wasLocked);
end
end
methods (Access = private)
function initTP(obj)
wasFigureClosed = (isempty(obj.pFig) || ~ishghandle(obj.pFig));
if wasFigureClosed
% Create a new figure
hfig = figure;
% Hide the figure while we build the theater plot
set(hfig,'Visible','off')
obj.pIsLegendOn = true;
obj.pFig = hfig;
end
% Create theaterPlot before the toolbar because clf clears toolbars
isTPNeeded = (isempty(obj.pTheaterPlot) || wasFigureClosed);
if isTPNeeded
clf(obj.pFig);
hax = axes(obj.pFig);
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
此示例演示如何融合来自多平台雷达网络的雷达检测。该网络包括两个机载和一个地面远程雷达平台。中央跟踪器以固定的更新间隔处理来自所有平台的检测。这能够根据目标类型、平台机动以及平台配置和位置评估网络的性能。 将trackerGNN用作中央跟踪器,用于处理从方案中的所有雷达平台接收的检测。 跟踪器使用支持函数为每个新轨道初始化一个等速扩展卡尔曼滤波器。 修改返回的过滤器以匹配高目标速度。 跟踪器设置为 50,以便能够将具有大范围偏差的检测(由于长检测范围内的大气折射效应)与跟踪器中的轨迹相关联。设置为 3 可快速删除冗余磁道。启用 以指定自上次更新以来至少一个雷达的视野内的轨迹。轨道逻辑仅在自上次跟踪器更新以来具有检测机会的轨道上进行评估。
资源推荐
资源详情
资源评论
收起资源包目录
多平台雷达检测融合.rar (6个子文件)
多平台雷达检测融合
helperPlotLongRangeCorrection.m 2KB
runMultiPlatFusionSim.m 5KB
truthAssignmentDistance.m 325B
MultiplatformScenarioRecording.mat 5.57MB
MultiplatformRadarDetectionFusionExample.mlx 10KB
helperMultiPlatFusionDisplay.m 24KB
共 6 条
- 1
资源评论
- xiangyanghuan2023-10-18资源不错,很实用,内容全面,介绍详细,很好用,谢谢分享。
- 坚定不移~2023-10-18发现一个超赞的资源,赶紧学习起来,大家一起进步,支持!
- m0_748355872023-12-28资源有很好的参考价值,总算找到了自己需要的资源啦。
- m0_690948452023-10-22非常有用的资源,可以直接使用,对我很有用,果断支持!
- HongweiMaWS2023-05-10总算找到了想要的资源,搞定遇到的大问题,赞赞赞!
珞瑜·
- 粉丝: 11w+
- 资源: 500
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功