无法在 MATLAB 上绘图

Can't plot on MATLAB

clear;
for R=3:18
    x=inv([9 119 0 0 0;
        0 16*R+8 -8 0 0;
        -1 -15 0 -4 4;
        -8 -148 0 40 0;
        0 -1 1 0 0])*[-40;
        0;
        0;
        -600;
        2*R]
    PR=((x(3,1)-x(2,1))^2)/R;
    plot(PR,R), hold on
end

我们有上面的代码,我们想绘制关于将 R 值从 3 更改为 18 的 PR,但是即使 MATLAB 也为 x 矩阵和最后一个 R 值 18 提供了正确的值,正确的 PR价值;它无法绘制图表。

方法 1:绘制为点

要将每个点绘制为一个点,可以将 plot() 线更改为 plot(PR,R,'.')。使用 hold on 将保留当前绘图,在此示例中,每次迭代都会添加一个点。 hold on 项通常用于在同一轴上叠加绘图。在这种情况下,被覆盖的图是单点。

for R = 3:18
    x = inv([9 119 0 0 0; 0 16*R+8 -8 0 0; -1 -15 0 -4 4; -8 -148 0 40 0; 0 -1 1 0 0])*[-40; 0; 0; -600; 2*R];
    PR = ((x(3,1)-x(2,1))^2)/R;
    plot(PR,R,'.');
    hold on
end

方法 2:绘制成一条线,矢量化方法

要将每次迭代的 PR 结果绘制成一条线,可以将其存储在一个数组中。可以使用此数组并针对定义在 3 到 18 范围内的另一个向量 R 进行绘制。在这种情况下,我在 plot() 行中使用 .- 修饰符来绘制 dots/markers在每个数据点。如果您只想拥有折线图,可以删除 .- 修饰符。

Index = 1;
for R = 3:18
    x = inv([9 119 0 0 0; 0 16*R+8 -8 0 0; -1 -15 0 -4 4; -8 -148 0 40 0; 0 -1 1 0 0])*[-40; 0; 0; -600; 2*R];
    PR(Index) = ((x(3,1)-x(2,1))^2)/R;
    Index = Index + 1;
end

R = (3:18);
plot(PR,R,'.-');

运行 使用 MATLAB R2019b