Как я могу ускорить этот цикл? - PullRequest
0 голосов
/ 04 июля 2019

У меня огромная матрица (5000x5000x100), и я пытаюсь сгладить каждый индекс по третьему измерению, но это занимает ЧАСЫ. Я делаю что-то неэффективно.

new_mat=zeros(size(my_mat));
for i = 1:length(mymat)
   for j = 1:length(mymat)
      new_mat(i,j,:) = wdenoise(squeeze(mymat(i,j,:)));
   end
end

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

1 Ответ

1 голос
/ 04 июля 2019

У меня нет доступа к более новой Wavelet Toolbox, необходимой для wdenoise, но так как функция будет работать по столбцам, если вы предоставите матрицу, вы сможете удалить внутренний цикл, который может немного увеличить скорость:

new_mat=zeros(my_mat)
for i = 1:length(mymat)
    new_mat(i,:,:) = wdenoise(squeeze(mymat(i,:,:)));
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...