Векторизация Октава - PullRequest
       74

Векторизация Октава

0 голосов
/ 23 апреля 2020

Я борюсь с некоторыми базовыми c операциями векторизации в Octave.

Допустим, я создаю экземпляр матрицы 10 * 10 A. A = magic(10) Я также создаю экземпляр вектора x. x = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]

Я хочу использовать векторизованную операцию вместо циклов for для заполнения пустого вектора e. e = zeros(10,1)

for i = 1:10
  for j = 1:10
    v(i) = v(i) + A(i, j) * x(j);
  end
end

Я изучил главу 19 документации по октаве о векторизации, и я считаю, что единственный ответ - v = A * x. Но я не уверен, существуют ли другие варианты для векторизации этого l oop.

1 Ответ

1 голос
/ 23 апреля 2020

Использование умножения - лучший вариант, но есть и другие варианты, например:

sum(A.*x.',2)

Часто встречаются такие решения, когда речь идет о векторизации циклов, например:

for i = 1:10
  for j = 1:10
    v(i) = v(i) + f(i,j);
  end
end

Промежуточным шагом является матрица, которая содержит все решения для f (i, j) (sum(A.*x.',2) в вашем примере), затем вы накапливаете замену + на sum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...