MATLAB:在矩阵中使用函数时避免循环

时间:2015-11-18 07:52:41

标签: algorithm matlab loops

我有一个矩阵A:“M x N”。我想在矩阵中运行一个函数,

例如,回归:让每列为Y,其余列为Xs

    for i=1:N
        Y = A(:,i);   % let Y be the "i"th columns
        X = A; X(:,i)=[];     % let X be other columns
        coef(:,i)=regress(Y,X);
    end

我想知道是否有任何matlab函数能够处理循环中的函数

1 个答案:

答案 0 :(得分:1)

这应该快得多!

[n_rows, n_cols] = size(A);
ind = true(1,n_cols);
coef2 = zeros(n_cols - 1, n_cols);

for i=1:n_cols
    y = A(:,i);   % let Y be the "i"th columns
    ind(i) = false;
    X = A(:,ind);     % let X be other columns
    coef2(:,i)= X\y;
    ind(i) = true;
end

我的代码与您的代码之间存在差异:

  1. X \ y给出了X上回归系数y。(最重要的)
  2. 我没有调整矩阵的大小。