如何在不带for循环的Matlab中创建自定义二维矩阵表?

时间:2019-01-28 17:41:09

标签: matlab time-complexity

我在Matlab中有一个M[12x2232]矩阵,还有三个矩阵a[2232]b[2232]c[2232]。我需要得到一个结果矩阵ResultMatrix[26784x5],其中行26784的总数为2232 * 12,如何在下面的嵌套循环中看到:

rowi = 1;
for ii = 1:2232
  for jj = 1:12
    row = { a(ii) M(ii,jj) b(ii) c(ii) jj*5 };
    ResultMatrix(counter, :) = row;
    rowi=rowi+1;
   end
end

但是执行时间太长(20分钟)。有没有一种方法可以更快地生成矩阵?

1 个答案:

答案 0 :(得分:0)

我对描述不甚了解,但是如果您的代码有效,则可以这样做:

new_a = repmat(a(:).',12,1);
new_b = repmat(b(:).',12,1);
new_c = repmat(c(:).',12,1);
new_M = M.';
ResultMatrix = [new_a(:) new_M(:) new_b(:) new_C(:) 5*repmat([1:12].',2232,1)];