Quick vectorization question (for loop)
显示 更早的评论
Hi
This loop takes about 0.085 seconds to execute and needs to be executed several thousand times. Is there a way you think I can vectorize this? I really appreciate any help!
wsize = 20;
vin = rand(1200,1);
for idx = wsize:length(vin)
mstd(idx-wsize+1, :) = std(vin(idx-wsize+1:idx));
end
PS: I don't have Parallel Processing toolbox.
采纳的回答
更多回答(1 个)
Image Analyst
2012-9-27
1 个投票
Do you have the Image Processing Toolbox? it looks like your code is a sliding window of a standard deviation filter. This is done by the function stdfilt() in the Image Processing Toolbox. Alternatively (if you don't have the Image Processing Toolbox) you could use an anonymous function and blockproc (I have a demo for that if you need it).
1 个评论
Matt Fig
2012-9-27
I had never heard of stdfilt, IA. Thanks!
类别
在 帮助中心 和 File Exchange 中查找有关 Blocked Images 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!