Array manipulation: Suppose you have an array.How to take windows with overlapping along column and repeat to next doing same
2 次查看(过去 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 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!