今天写一篇关于matlab绘图的文章,是以前的一个前辈教自己的,当时觉得matlab居然还能这样画图。后面这种方法用多了以后,自己就能举一反三了。
要点就是在画目标轨迹的同时,把目标与雷达的连线也画出来,这样能更好地呈现目标与雷达的相对位置关系。下面是matlab代码:
clc;clear;close all;
%% 参数设置
% 雷达位置
radarLon = 113.3; % 雷达经度(°)
radarLat = 28.1; % 雷达纬度(°)
radarHgt = 1000; % 雷达高度(m)
%% 读取目标轨迹
load 'targetWGS84.txt';
targetLon = targetWGS84(:,2).'; % 目标经度(°)
targetLat = targetWGS84(:,3).'; % 目标纬度(°)
targetHgt = targetWGS84(:,4).'; % 目标高度(m)
%% 绘制目标相对于雷达运动的轨迹
figure
plot3(radarLon, radarLat, radarHgt,'o', 'MarkerFaceColor', 'red', 'MarkerSize', 6);hold on;
for n = 1:size(targetWGS84,1)
plot3(targetLon, targetLat, targetHgt, 'r-*'); % 使用plot3绘制三维图
lonlon = [radarLon, targetLon(n)]; % [雷达经度,目标点经度]
latlat = [radarLat, targetLat(n)]; % [雷达纬度,目标点纬度]
hgthgt = [radarHgt, targetHgt(n)]; % [雷达高度,目标点高度]
plot3(lonlon, latlat, hgthgt, 'g');
end
hold off;
xlabel('经度(°)');
ylabel('纬度(°)');
zlabel('高度(m)')
title('目标轨迹');
这段代码使用了plot3绘制三维图,'o'
是指定绘制点的形状为圆圈。 'MarkerFaceColor', 'red'
指定圆圈的填充颜色为红色。'MarkerSize', 6
指定绘制点的大小为 6。 hold on
是指示保持当前的图形打开,这样可以在同一个图形中多次绘制而不清除之前的内容,在绘制完所有图形后,使用hold off关闭当前图形的保持状态。
绘制多条绿色的向量线条,核心是画图时一个点一个点地画,也就是使用for循环;绘制每一条绿色的连线,需要构造包含起点和终点的向量,比如,第n个目标点与雷达的经度向量就是:[radarLon, targetLon(n)]。
下图是上面这段代码绘制出的效果图:
下载代码加载的目标轨迹txt: