Optimizing a Sliding Window for Matrix Re-Assignment

2 次查看(过去 30 天)
I have a matrix, A, which is a massive NxM matrix where N is several millions and M is relatively small. and I would like to do an operation (xcorr() or std(), for example) on a window of this matrix, A(i:i+x,:), for i=1:N. However, using "for" loops ends up taking a lot of time since Matlab and "for" loops get along like me and my "ex" wife.
I'm trying to optimize it by creating a new matrix, B composed of the windows of A. For example, if
A=[1 2 3 4 5 6 8 9 10],
and the window size is x=3,
B= [1 2 3
2 3 4
3 4 5
...
8 9 10]
Is there any way to optimize this using only vector/matrix operations in order to speed up processing?
  1 个评论
Eng. Fredius Magige
Eng. Fredius Magige 2015-10-29
You have post 3 times the same QUESTION, please do just once; any amendment might use comment to verify etc.
Put clear you task; note that and mostly vectorization handle it/assignment quickly (in fraction of minutes) Thanks

请先登录,再进行评论。

采纳的回答

Thorsten
Thorsten 2015-10-29
编辑:Thorsten 2015-10-29
If you have the image processing toolbox, you can use:
stdA3 = colfilt(A, [3 1], 'sliding', @std);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Random Number Generation 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by