⛄一、获取代码方式
获取代码方式1:
完整代码已上传我的资源:【雷达检测】基于matlab模拟海洋监视雷达检测仿真【含Matlab源码 2268期】
点击上面蓝色字体,直接付费下载,即可。
获取代码方式2:
付费专栏Matlab信号处理(初级版)
备注:
点击上面蓝色字体付费专栏Matlab信号处理(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab信号处理(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码
⛄二、部分源代码
% Create tracking scenario.
scenario = trackingScenario(‘StopTime’,30);
% Define unit conversions.
nmi2m = 1852; % nautical miles to meters
hr2s = 3600; % hours to seconds
kts2mps = nmi2m/hr2s; % knots to meters per second
%% Marine Surveillance Radar
% Add a marine surveillance radar to the tower. The radar is mounted 20
% meters above sea level (ASL). The radar stares into the harbor, surveying
% a 30 degree azimuth sector. Common specifications for a marine
% surveillance radar are listed:
%
% * Sensitivity: 0 dBsm @ 5 km
% * Field of View: 30 deg azimuth, 10 deg elevation
% * Azimuth Resolution: 2 deg
% * Range Resolution: 5 m
%
% Model the marine radar with the above specifications using the
% |fusionRadarSensor|.
% Create surveillance radar.
sensor = fusionRadarSensor(1,‘No scanning’, …
‘MountingLocation’,[0 0 -20], … % 20 meters (ASL)
‘MountingAngles’,[45 0 0], … % [yaw pitch roll] deg
‘FieldOfView’,[30 10], … % [az el] deg
‘ReferenceRange’,5e3, … % m
‘AzimuthResolution’,2, … % deg
‘RangeResolution’,5, … % m
‘HasINS’,true,… % Report INS information
‘TargetReportFormat’,‘Detections’,… % Detections without clustering
‘DetectionCoordinates’,‘Sensor spherical’);
%%
% Add the tower to the scenario as a stationary platform with the radar
% mounted on top of it.
platform(scenario,‘Sensors’,sensor);
tower = scenario.Platforms{1}
%%
% Add three ships in the harbor within the radar’s surveillance sector. The
% two smaller ships are turning at 20 and 30 knots, the large ship is
% traveling at a constant heading at 10 knots.
% Define the dimensions for the two small ships.
dim = struct( …
‘Length’,80, … % m
‘Width’,15, … % m
‘Height’,5, … % m
‘OriginOffset’, [0 0 5/2]); % [x y z] m
% Model the radar cross section (RCS) of the small ships as 30 dBsm.
rcs = rcsSignature(‘Pattern’,30);
% Create a turning trajectory.
speed = 20; % knots
initYaw = 130; % deg
initPos = [1050 790 0];
radius = 200; % m
initOrient = quaternion([initYaw 0 0], ‘eulerd’, ‘ZYX’, ‘frame’);
initVel = speedkts2mpsrotatepoint(initOrient,[1 0 0])';
accBody = [0 (speedkts2mps)^2/radius 0];
angVelBody = [0 0 speedkts2mps/radius];
traj = kinematicTrajectory(‘Position’,initPos,‘Velocity’,initVel,‘Orientation’,initOrient, …
‘AccelerationSource’,‘Property’,‘Acceleration’,accBody, …
‘AngularVelocitySource’,‘Property’,‘AngularVelocity’, angVelBody);
% Add the first small ship, traveling at 20 knots to the scenario. This is
% the closest ship to the radar tower.
platform(scenario,‘Dimensions’,dim,‘Signatures’,rcs,‘Trajectory’,traj);
% Create the other small ship, traveling at 30 knots. This is the ship
% which is farthest from the radar tower.
speed = 30; % knots
initYaw = 120; % deg
initPos = [1410 1180 0];
radius = 400; % m
initOrient = quaternion([initYaw 0 0],‘eulerd’,‘ZYX’,‘frame’);
initVel = speedkts2mpsrotatepoint(initOrient,[1 0 0])';
accBody = [0 (speedkts2mps)^2/radius 0];
angVelBody = [0 0 speedkts2mps/radius];
traj = kinematicTrajectory(‘Position’,initPos,‘Velocity’,initVel,‘Orientation’,initOrient, …
‘AccelerationSource’,‘Property’,‘Acceleration’,accBody, …
‘AngularVelocitySource’,‘Property’,‘AngularVelocity’, angVelBody);
platform(scenario,‘Dimensions’,dim,‘Signatures’,rcs,‘Trajectory’,traj);
% Define the dimensions for the large ship.
dim = struct( …
‘Length’,400, … % m
‘Width’,60, … % m
‘Height’,15, … % m
‘OriginOffset’, [0 0 15/2]); % [x y z] m
% Model the radar cross section (RCS) of the large ship as 75 dBsm.
rcs = rcsSignature(‘Pattern’,75);
% Create the large ship’s trajectory, traveling at a constant heading at 10 knots.
speed = 10; % knots
initYaw = -135; % deg
initPos = [1150 1100 0];
initOrient = quaternion([initYaw 0 0],‘eulerd’,‘ZYX’,‘frame’);
initVel = speedkts2mpsrotatepoint(initOrient,[1 0 0])';
traj = kinematicTrajectory(‘Position’,initPos,‘Velocity’,initVel,‘Orientation’,initOrient, …
‘AccelerationSource’,‘Property’,‘AngularVelocitySource’,‘Property’);
% Add the large ship to the scenario.
platform(scenario,‘Dimensions’,dim,‘Signatures’,rcs,‘Trajectory’,traj);
% Create a display to show the true, measured, and tracked positions of the ships.
theaterDisplay = helperMarineSurveillanceDisplay(scenario, …
‘IsSea’,true,‘DistanceUnits’,‘m’, …
‘XLim’,450*[-1 1]+1e3,‘YLim’,450*[-1 1]+1e3,‘ZLim’,[-1000 10], …
‘Movie’,‘MarineSurveillanceExample.gif’);
slctTrkPos = zeros(3,7); slctTrkPos(1,1) = 1; slctTrkPos(2,3) = 1; slctTrkPos(3,6) = 1;
slctTrkVel = circshift(slctTrkPos,[0 1]);
theaterDisplay.TrackPositionSelector = slctTrkPos;
theaterDisplay.TrackVelocitySelector = slctTrkVel;
theaterDisplay();
snapnow(theaterDisplay);
%% Multi-Target GGIW-PHD Tracker
% Create a |trackerPHD| to form tracks from the radar detections generated
% from the three ships in the harbor. The PHD tracker enables the
% estimation of the size of the ships by allowing multiple detections to be
% associated to a single object. This is important in situations such as
% marine surveillance where the size of the objects detected by the sensor
% is greater than the sensor’s resolution, resulting in multiple detections
% generated along the surfaces of the ships.
%
% The tracker uses the |filterInitFcn| supporting function to initialize a
% constant turn-rate Gamma Gaussian Inverse Wishart (GGIW) PHD filter.
% |filterInitFcn| adds birth components to the PHD-intensity at every
% time step. These birth components are added uniformly inside the field
% of view of the sensor. Their sizes and expected number of detections are
% specified using prior information about the types of ships expected in
% the harbor.
%
% The tracker uses the gamma distribution of the GGIW-PHD components to
% estimate how many detections should be generated from an object. The
% tracker also calculates the detectability of each component in the
% density using the sensor’s limits. Use |trackingSensorConfiguration| to
% model the sensor’s configuration for |trackerPHD|.
% Define radar’s measurement limits and resolution.
azLimits = sensor.FieldOfView(1)/2*[-1 1]; % deg
rangeLimits = [0 15e3]; % m
sensorLimits = [azLimits;rangeLimits];
sensorResolution = [sensor.AzimuthResolution;sensor.RangeResolution];
% Define the sensor’s mounting location and orientation on the tower.
params(1) = struct(‘Frame’,‘Spherical’, …
‘OriginPosition’,sensor.MountingLocation(😃, …
‘OriginVelocity’,[0;0;0], …
‘Orientation’,rotmat(quaternion(sensor.MountingAngles,‘eulerd’,‘zyx’,‘frame’),‘frame’),…
‘IsParentToChild’, true, …
‘HasRange’,true,‘HasElevation’,sensor.HasElevation,‘HasVelocity’,false);
% Define the tower’s location, velocity, and orientation in the scenario.
params(2) = struct(‘Frame’,‘Rectangular’, …
‘OriginPosition’,tower.Trajectory.Position(😃, …
‘OriginVelocity’,tower.Trajectory.Velocity(😃, …
‘Orientation’,rotmat(tower.Trajectory.Orientation,‘frame’), …
‘IsParentToChild’, true, …
‘HasRange’,true,‘HasElevation’,false,‘HasVelocity’,false);
% Create a trackingSensorConfiguration to model the detectability of the
% tracks by the sensor. The detection probability defines the probability
% of generating at least 1 detection from the extended object.
sensorConfig = trackingSensorConfiguration(‘SensorIndex’,sensor.SensorIndex, …
‘SensorLimits’,sensorLimits,…
‘SensorResolution’,sensorResolution,…
‘DetectionProbability’,0.99,…
‘SensorTransformParameters’,params);
% Fields on the sensor configuration used to update trackingSensorConfiguration.
configFlds = {‘SensorIndex’,‘IsValidTime’};
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]李树锋.基于完全互补序列的MIMO雷达与5G MIMO通信[M].清华大学出版社.2021
[2]何友,关键.雷达目标检测与恒虚警处理(第二版)[M].清华大学出版社.2011
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除