sliding window and keeping as a vector
Afficher commentaires plus anciens
I have D-1 data of points 1-500 I would like to slide this data to have 20points in each window and be as a vector [123...20, 21...40 ect] I was trying to do it but it is showing a matrix (20x25) I am new to matlab anyone could help me please?
Réponses (1)
Image Analyst
le 9 Sep 2014
How about
array2D = reshape(data, [20,25]);
Is that what you meant and want?
9 commentaires
Nessa
le 9 Sep 2014
Sean de Wolski
le 9 Sep 2014
So:
median(array2D,2)
Start with something simple, data = 1:6 , and build from there. reshape and transpose (.') will be your friends
Image Analyst
le 9 Sep 2014
Nessa, if you have the Image Processing Toolbox, look at blockproc() which will let you apply some function/operation to a vector or image in "jumps" of 20. I.e. the window slides along in jumps of 20 pixels (or whatever you specify) rather than one element at a time. Though you could also process array2D row by row.
Nessa
le 9 Sep 2014
Modifié(e) : Image Analyst
le 9 Sep 2014
Image Analyst
le 9 Sep 2014
Well you said you were starting with a vector, so what's the problem? It's already a vector. What operation do you want to do? Moving average, moving mean, some custom linear filter, some highly customized set of operations you've encapsulated into a custom function? What?
Image Analyst
le 9 Sep 2014
Nessa's "Answer" moved here:
calculate an average from each 20 points and further 20 points up to 500
Image Analyst
le 9 Sep 2014
Try this:
data = randi(9, 1, 500); % Sample data
array2D = reshape(data, [20, 25]);
means = mean(array2D, 1)
Nessa
le 9 Sep 2014
Image Analyst
le 9 Sep 2014
You're welcome. If we're done, then can you please mark the answer as "Accepted"? Thanks.
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!