Как создать пользовательскую 2d матричную таблицу в Matlab без цикла for? - PullRequest
0 голосов
/ 28 января 2019

У меня есть матрица M[12x2232] в matlab и три матрицы 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 голосов
/ 28 января 2019

Я не очень хорошо понял описание, но если ваш код работает, вы можете сделать это так:

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)]; 
...