ускорить этот код Matlab? - PullRequest
       4

ускорить этот код Matlab?

0 голосов
/ 17 ноября 2011

Есть ли хороший способ ускорить этот блок кода Matlab (в частности, n может быть большим), используя матричные операции, или что-нибудь еще? Более 1/4 моего времени выполнения находится в этом небольшом блоке кода.

% Get the bin indexes that we will place the network in
bins = [];
for n=low_freq:0.5:high_freq;
    bins = [bins, (n-spec_start)/spec_bin_size+1];
end

Тестовый код:

spec_start=2400
spec_bin_size=0.5
low_freq = 2437
high_freq=2438

bins = [];
for n=low_freq:0.5:high_freq;
    bins = [bins, (n-spec_start)/spec_bin_size+1];
end

bins  % 75 76 77

bins = [];
bins = (low_freq:0.5:high_freq - spec_start)./spec_bin_size + 1;

bins  % empty?

1 Ответ

6 голосов
/ 17 ноября 2011

Вы можете пропустить цикл:

bins = ((low_freq:0.5:high_freq) - spec_start)./spec_bin_size + 1;

В ситуациях, когда вы не можете выполнять векторизованные вычисления, как указано выше, вы должны как минимум предварительно выделить массив вывода

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