Array manipulation: Suppose you have an array.How to take windows with overlapping along column and repeat to next doing same
조회 수: 3(최근 30일)
표시 이전 댓글
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]
댓글 수: 0
채택된 답변
Kirby Fears
2017년 1월 12일
편집: Kirby Fears
2017년 1월 12일
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
Kirby Fears
2017년 1월 23일
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,:)];
추가 답변(0개)
참고 항목
범주
Find more on Operators and Elementary Operations 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!