【问题标题】:Octave one line two plot differ from multiple line plot八度一线二图与多线图不同
【发布时间】:2020-05-31 11:11:53
【问题描述】:

我正在拟合一些数据,但是当我绘制数据并拟合单线图(见左图)时,绘制的图形是正确的

plot(x, y, '.b;data;', [0.05 2], phi(1)+phi(2)*[0.05 2], '--r;fit;', [0.05 2]);

但是当我使用两个单独的图(见右图)时,该图与上面提到的不同

hold on;

plot(x, y, '.b;data;', [0.05 2]);
plot(phi(1)+phi(2)*[0.05 2], '--r;fit;', [0.05 2]);

hold off;
grid on;

数据

[x, y]
ans =
    0.050000     3571.000000
    0.100000     6567.000000
    0.200000    12760.000000
    0.300000    20512.000000
    0.400000    25480.000000
    0.500000    32088.000000
    1.000000    63223.000000
    2.000000   128690.000000

计算线性回归

A = [N, sum(x); sum(x), sum(x.*x)];
b = [sum(y); sum(x.*y)];
phi = inv(A)*b;

有没有办法解决这个问题?

【问题讨论】:

  • 小问题:你不应该使用 phi = inv(A)*b 而是 phi = A\b; 。它在这里没有区别,但它可以在更大或坏的条件矩阵上有所不同

标签: plot octave


【解决方案1】:

当未指定 x 轴值时,1:numel(y) 被视为 x 轴值。

在您的代码中:

%Your first graph:
plot(x, y, '.b;data;', [0.05 2], phi(1)+phi(2)*[0.05 2], '--r;fit;', [0.05 2]);
                                                                     %^^^^^^^

%Your second graph:

plot(x, y, '.b;data;', [0.05 2]);
                      %^^^^^^^^^

plot(phi(1)+phi(2)*[0.05 2], '--r;fit;', [0.05 2]);
    %!!!!!!!!!!!!!!!!!!!!!!             %^^^^^^^^^

上面plot命令中用^突出显示的部分有x=[1 2]y=[0.05 2],用!突出显示的部分有x=[1 2]y=phi(1)+phi(2)*[0.05 2]。如果您放大该区域,您可以看到这些线条正在绘制。

所以你的第一个绘图命令应该是:

plot(x, y, '.b;data;', [0.05 2], phi(1)+phi(2)*[0.05 2], '--r;fit;');

它应该像这样拆分:

plot(x, y, '.b;data;'); 
hold on;
plot([0.05 2], phi(1)+phi(2)*[0.05 2], '--r;fit;');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多