как уменьшить цикл в Matlab - PullRequest
0 голосов
/ 12 марта 2012

У меня есть такая функция:

A (x, y, z, t) = A (x, y, z, t-1) + A (x, y, z-1, t) + A (x, y, z + 1, t-1)

y, z и t - мои векторы данных, но мне пришлось реализовать функцию на сетке с четырьмя длязацикливается в Matlab и это ужасно медленно.Я не мог векторизовать это из-за последовательности. Не могли бы вы посоветовать мне что-нибудь?

1 Ответ

1 голос
/ 13 марта 2012

Я полагаю, что в вашем примере следующий код выполнил бы то, что вы хотите без циклов for:

A = circshift(A,[0,0,0,-1]) + circshift(A,[0,0,-1,0]) + circshift(A,[0,0,1,-1])

Это будет работать, если вы хотите круговое смещение. В противном случае, я думаю, что вам придется дополнить нулями, а затем удалить дополнения.

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