【问题标题】:Graphing different sets of data on same graph within a ‘for’ loop MATLAB在“for”循环 MATLAB 中将不同的数据集绘制在同一张图上
【发布时间】:2015-07-14 23:05:39
【问题描述】:

我只是在“for”循环中在同一张图上绘制不同的图时遇到了问题。我希望有人能指出我正确的方向。

我有一个二维数组,其中包含零和零之间的离散数据块。我的数据如下:

A=

    0           0
    0           0
    0           0
    3           9
    4          10
    5          11
    6          12
    0           0
    0           0
    0           0
    0           0
    7         9.7
    8         9.8
    9         9.9
    0           0
    0       0

数据块定义为连续的数据集,没有 [0 0] 行的中断。所以在这个例子中,第一块数据是

    3           9
    4          10
    5          11
    6          12

第二块是

    7        9.7
    8        9.8
    9        9.9

第一列是 x,第二列是 y。我想将 y 绘制为 x 的函数(x 是水平轴,y 是垂直轴)我想将这些数据集绘制在与散点图相同的图上,并在点之间放置一条最佳拟合线我遇到了一大块数据。在这种情况下,我将有 2 组点和 2 条最佳拟合线(因为我有 2 块数据)。我还想计算 R 平方值

我目前的代码如下所示:

fh1 = figure;
hold all;
ah1 = gca;

% plot graphs:
for d = 1:max_number_zeros+num_rows
    if sequence_holder(d,1)==0
        continue;
    end
    c = d;

    while sequence_holder(c,1)~=0
        plot(ah1,sequence_holder(c,1),sequence_holder(c,num_cols),'*');
        %lsline;
        c =c+1;
        continue;
    end
end

序列持有者是其中包含数据的数组。我只能绘制第一组数据,没有最佳拟合线。我试过 lsline,但没用。

谁能告诉我怎么做

-绘制两组图表

-如何画一条最佳拟合线a得到回归系数?

【问题讨论】:

    标签: matlab for-loop plot regression


    【解决方案1】:

    第一部分可以通过多种方式完成。我会测试第二列是否为零

    zerodata = A(:,2) == 0;
    

    这将为您提供一个由 1 和 0 组成的逻辑数组,例如 [1 1 1 0 1 0 0 ...]。然后你可以用它来分割你的输入。您可以查看该数组的diff 并测试它的正号或负号。您的数据从 0 开始,因此您不会获得该数据的转换,因此您需要考虑一些方法来处理这种情况或相反的情况,除非您确定它始终是一种方式或其他。您可以只测试第一个元素,也可以在输入数组的开头插入一个已知值。

    然后你必须存储你的块。由于它们可能具有可变长度和可变数量,因此您不会将它们放入大矩阵中,但您仍然希望能够使用循环。我会使用一个单元格数组,其中一行中的每个单元格都包含一个块的 x 或 y 数据,或者使用一个结构数组,其中 structarray(1).xstructarray)1).y 保存您的数据值。

    然后你可以遍历你的结构数组并分别在每个块上调用 plot。

    至于拟合,您可以使用fit 命令。它很复杂并且有很多选项,因此您应该先查看帮助(在控制台中输入doc fit 以获取内联帮助,这与内容中的网站帮助相同)。简短的版本是您可以像这样进行简单的线性拟合

    [fitobject, gof] = fit(x, y, 'poly1');
    

    其中 'poly1' 指定你想要一个一阶多项式(即直线),输出参数给你一个合适的对象,你可以用 plot 或 interpolate 做各种事情,第二个给你一个结构,其中包含其他的东西 r^2 和调整后的 r^2。 fitobject 还包含您的拟合系数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 2020-09-06
      • 1970-01-01
      • 2015-07-24
      相关资源
      最近更新 更多