【问题标题】:MATLAB save multiple outputs from a function many times overMATLAB 多次保存函数的多个输出
【发布时间】:2013-02-22 04:00:42
【问题描述】:

在 MATLAB 中,我尝试在多个 X 和 Y 上使用此函数后创建内置函数 [r, p] = corr(X1,Y1); 的输出矩阵。然后,我想将所有 r 和 p 合并到它们各自的矩阵 R 和 P 中。例如,如果我只从 corr 调用一个输出,我可以轻松做到这一点:

R = [corr(X1,Y1), corr(X2,Y2); (...)
     corr(X3,Y3), corr(X4,Y4)];

因为corr 默认返回r 值。有没有办法为p 实现这一目标?下面是我做的很长的路,我只是想知道是否有像上面这样更短更简单的方法。

首先找到rp

[r1, p1] = corr(X1,Y1);
[r2, p2] = corr(X2,Y2);
[r3, p3] = corr(X3,Y3);
....

然后将它们组合成矩阵:

R = [r1 r2; (...)
     r3 r4; (...)
     ...];
P = [p1 p2; (...)
     p3 p4; (...)
     ...];

谢谢。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    你可以尝试一下

    for i=1:n,
      [R(:,end+1), P(:,end+1)] = corr(X(:,i), Y(:,i));
    end
    

    只需确保 R(:,1)P(:,1) 的大小正确。 分配 R(:,end+1)P(:,end+1) 将自动增长 RP,而无需手动将它们从临时变量中组合起来。

    【讨论】:

    • 这仅在 RP 初始化为空时有效。相反,只需使用(:,i) 进行索引。
    • 为了获得最佳性能,请将 R 和 P 初始化为它们最终必须达到的大小的矩阵。例如使用zeros(n,m)。然后像@shoelzer 说的那样使用索引。在每次迭代中更改矩阵的大小会更慢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2013-05-06
    • 2013-09-18
    相关资源
    最近更新 更多