Быстрый массив как передача аргумента в MATLAB - PullRequest
1 голос
/ 25 ноября 2010

У меня есть матрица I, и я хочу накапливать в массиве A, для каждого значения в I интервал, соответствующий этим значениям в I, давайте назовем их i и j.

function acc(i,j)
  global A
  A(i:j) = A(i:j)+1;
end

Однако, передача и возврат массивов занимает слишком много времени, потому что я выполняю функцию много раз, и это не так просто, как в этом примере.

Есть ли способ ускорить его? Как я могу передать возврат этих значений без глобальных?

1 Ответ

1 голос
/ 29 ноября 2010

Ссылка в комментариях предлагает использовать вложенную функцию в качестве решения. Если используемая вами функция используется в нескольких разных местах, возможно, вы не захотите вкладывать ее в каждое место. В этом случае я бы попытался изменить функцию на месте.

http://blogs.mathworks.com/loren/2007/03/22/in-place-operations-on-data/

function A = acc(A,i,j)
  A(i:j) = A(i:j)+1;
end

Для этого не нужно делать копию, если вы соответствуете требованиям, изложенным в сообщении в блоге Лорен.

...