sliding window and keeping as a vector
Show older comments
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?
Answers (1)
Image Analyst
on 9 Sep 2014
How about
array2D = reshape(data, [20,25]);
Is that what you meant and want?
9 Comments
Nessa
on 9 Sep 2014
Sean de Wolski
on 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
on 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
on 9 Sep 2014
Edited: Image Analyst
on 9 Sep 2014
Image Analyst
on 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
on 9 Sep 2014
Nessa's "Answer" moved here:
calculate an average from each 20 points and further 20 points up to 500
Image Analyst
on 9 Sep 2014
Try this:
data = randi(9, 1, 500); % Sample data
array2D = reshape(data, [20, 25]);
means = mean(array2D, 1)
Nessa
on 9 Sep 2014
Image Analyst
on 9 Sep 2014
You're welcome. If we're done, then can you please mark the answer as "Accepted"? Thanks.
Categories
Find more on Standard File Formats in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!