октава векторизация 2 для петель - PullRequest
0 голосов
/ 09 июня 2018

как этот цикл можно векторизовать?Я должен умножить вектор и его транспонировать, чтобы сгенерировать матрицу n * n, чтобы затем вычесть его на единичную матрицу, но для генерации матрицы требуется слишком много времени.Спасибо

vi1=i1'(:)';  --->vector
vi1t=i1'(:);  --->vector transpose


z=length(vi1t);
x=length(vi1);

for n=1:z
  for m=1:x
    ma1(n,m)=vi1t(n)*vi1(m)
  end
end

#m1=ma1-eye(rows(ma1)); not implemented yet

1 Ответ

0 голосов
/ 14 июня 2018

Вы можете использовать оператор. *!

Для вашего примера:

a=i1'(:)';

aT=i1'(:);

A = a .* aT

Также есть другие операторы, которые ведут себя так же, как ./

Вот полезная таблица Iиспользуйте иногда:

https://gist.github.com/obstschale/7320846 - Кредиты принадлежат автору: https://gist.github.com/obstschale

...