Optimizing a Sliding Window for Matrix Re-Assignment

1 vue (au cours des 30 derniers jours)
Al Capwn
Al Capwn le 29 Oct 2015
Commenté : Al Capwn le 30 Oct 2015
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 commentaire
Eng. Fredius Magige
Eng. Fredius Magige le 29 Oct 2015
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

Connectez-vous pour commenter.

Réponse acceptée

Thorsten
Thorsten le 29 Oct 2015
Modifié(e) : Thorsten le 29 Oct 2015
If you have the image processing toolbox, you can use:
stdA3 = colfilt(A, [3 1], 'sliding', @std);
  1 commentaire
Al Capwn
Al Capwn le 30 Oct 2015
Wowza, it's about 10x faster, thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by