【发布时间】:2015-04-29 06:39:58
【问题描述】:
我正在尝试学习如何向量化 matlab 循环,所以我只是做了一些小例子。
这是我试图矢量化的标准循环:
function output = moving_avg(input, N)
output = [];
for n = N:length(input) % iterate over y vector
summation = 0;
for ii = n-(N-1):n % iterate over x vector N times
summation += input(ii);
endfor
output(n) = summation/N;
endfor
endfunction
我已经能够矢量化一个循环,但无法弄清楚如何处理第二个循环。到目前为止,这是我要去的地方:
function output = moving_avg(input, N)
output = [];
for n = N:length(input) % iterate over y vector
output(n) = mean(input(n-(N-1):n));
endfor
endfunction
有人可以帮我进一步简化吗?
编辑:
输入只是一个一维向量,可能最多 100 个数据点。 N 是单个整数,小于输入的大小(通常可能在 5 左右)
我实际上并不打算将它用于任何特定的应用程序,它只是一个简单的嵌套循环,我认为它可以很好地用于学习矢量化..
【问题讨论】:
-
输入的维度是多少?您正在使用哪些数据大小?
-
我已经更新了帖子..
标签: matlab vectorization