Ускорение векторного суммирования - PullRequest
0 голосов
/ 18 января 2020

У меня есть этот концептуальный алгоритм в Matlab для суммирования элементов вектора x через некоторое время l oop:

while y <= ythreshold

y = sum(x(x <= xthreshold));

end

Предположим, мы добавили дополнительное условие, что размер x вектор растет во время этого l oop. Очевидно, что мы можем ожидать, что операция суммирования должна занять больше времени, так как размер вектора x увеличится. Я хочу спросить, какие меры мы можем предпринять, чтобы увеличить скорость суммирования.

Буду благодарен за любую помощь, которую вы можете оказать.

1 Ответ

0 голосов
/ 19 января 2020

Вы можете использовать cumsum для вычисления кумулятивной суммы вектора:

ySum = cumsum(x);
% logical check
lg = ySum < ythreshold;
% get last index
idx = find(lg,'last');
y = ySum(idx);

Преимущество в скорости зависит от того, насколько велико x и насколько далеко вы найдете значение.

PS: В целом, это очень поможет, если вы предоставите минимально ценный пример (MVE), чтобы люди могли воспроизвести вашу проблему.

...