MATLAB Answers

Array manipulation: Suppose you have an array.How to take windows with overlapping along column and repeat to next doing same

2 views (last 30 days)
MSP
MSP on 12 Jan 2017
Commented: Kirby Fears on 23 Jan 2017
for example a= [1 2 3 4 5; 4 7 9 1 5; 8 7 3 2 1; 3 2 9 1 7]
so what is required to be done is take out a window of size 3 and shift the window 1 data point in the next iteration. SO the result will show
1 4 8
then 483 for the first column in 1st column of a new array.So the first array would have 6 elements and it will be a 6*5 array.
so the new array would have first two columns like 1st column [1;4;8;4;8;3] 2nd column [2;7;7;7;7;2]

Accepted Answer

Kirby Fears
Kirby Fears on 12 Jan 2017
Edited: Kirby Fears on 12 Jan 2017
Indexing and stacking as shown below will work for your example. Does this work for your real use case also?
a = [1 2 3 4 5; 4 7 9 1 5; 8 7 3 2 1; 3 2 9 1 7];
b = [a(1:end-1,:); a(2:end,:)];
  2 Comments
Kirby Fears
Kirby Fears on 23 Jan 2017
The example I posted is easily extended to general window and shift sizes. For example, my original solution can be written with window size 3 and step size 1.
windowSize = 3;
stepSize = 1;
a = [1 2 3 4 5; 4 7 9 1 5; 8 7 3 2 1; 3 2 9 1 7];
b = [a(1:windowSize,:); a(1+stepSize:windowSize+stepSize,:)];

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!