首页 > 解决方案 > 以用户在 MATLAB 中测量的指定角度一致地生成线

问题描述

考虑下面的简单代码,它在 MATLAB 中生成一条直线向下倾斜的线。

clear, clc, close all

t = 0:0.1:1;
y = -t+1;


plot(t,y)
ax = gca

这是一条斜率为 -1 的直线,因此水平轴与直线之间的(锐角)角度为 45 度。除非您在显示器上使用量角器进行测量。

在不更改 x 和 y 轴上显示的值范围或图形窗口的高度的情况下,如果我将量角器举到屏幕上,如何确保从水平轴到直线测量 45 度?

我目前的做法是改变图形窗口的宽度。在图形窗口无限细的极限中,线 x 是一条垂直线。相反,如果图形窗口被拉伸到监视器的边缘,它就会变平。在中间的某个地方,这条线有我想要的角度。我只是找不到一种在数学上找到这一点并在代码中实例化它的好方法。

编辑:任何锐角的更通用的解决方案。(我没有测试钝角。)

clear, clc, close all

ang_deg = 70;
slope = tand(ang_deg);


t = 0:0.1:1;
y = -slope*t+1;

f = figure;
f.Position(3) = f.Position(3)*1.5;
plot(t,y)

% For a given height, change the width
ax = gca;
ax.Units = 'pixels';
ax.Position(3) = ax.Position(4)/slope;

标签: matlabmatlab-figureaspect-ratio

解决方案


你可以用

axis equal

根据文档

沿每个轴对数据单元使用相同的长度。

您可能还想使用

axis tight

哪个

通过将轴范围设置为等于数据范围,使轴框紧密围绕数据


推荐阅读