我正在尝试在Matlab中模拟目标的运动,该目标的初始x和y坐标,真实方位角和速度(以m/s为单位)已指定。我想知道是否有一种方法可以简单地以指定的方位角绘制一条直线,以显示目标所采取的路径(如下图所示)

提前致谢!

最佳答案

最好的选择是依靠内置的极坐标图功能之一来执行此操作。我认为最类似于您的需求的是 compass 。它实质上是在极坐标图上绘制从中心指向点(在笛卡尔坐标中定义)的箭头。

theta = deg2rad(130);

% Your speed in m/s
speed = 5;

hax = axes();
c = compass(hax, speed * cos(theta), speed * sin(theta));

% Change the view to orient the axes the way you've drawn
view([90 -90])

matlab - 如何在Matlab中以方位角绘制线?-LMLPHP

然后,为了更改方位角和速度,您只需使用新的方位角/速度再次调用compass函数。
new_theta = deg2rad(new_angle_degrees);
c = compass(hax, new_speed * cos(new_theta), new_speed * sin(new_theta));

其他极坐标绘制选项包括 polar polarplot ,它们接受极坐标但没有箭头。如果您不喜欢极坐标图,则可以始终在直角坐标轴上使用quiver(确保指定相同的轴)。

编辑
根据您的反馈和要求,以下是行驶距离的极坐标图示例。
% Speed in m/s
speed = 5;

% Time in seconds
time = 1.5;

% Bearing in degrees
theta = 130;

hax = axes();

% Specify polar line from origin (0,0) to target position (bearing, distance)
hpolar = polar(hax, [0 deg2rad(theta)], [0 speed * time], '-o');

% Ensure the axis looks as you mentioned in your question
view([90 -90]);

matlab - 如何在Matlab中以方位角绘制线?-LMLPHP

现在,要使用新的方位角,速度和时间来更新该图,您只需简单地再次调用polar来指定轴。
hpolar = polar(hax, [0 theta], [0 speed], '-o');

10-08 17:44