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!