首页 > 解决方案 > 将列矩阵转换为具有重复数据的多行

问题描述

在 Matlab 中,给定矩阵 'a' 为:

a = [1 2 3 4 5 6 7 8 9]';

但是几百万行深,将其转换为“b”中显示的格式的最佳方法是什么?

b = [1 2 3 4 5 6
     2 3 4 5 6 7
     3 4 5 6 7 8
     4 5 6 7 8 9]

其中'b'中的每一行包含来自'a'的N个连续值?

我可以编写一个函数,但想知道是否有更快、更内置的方法?

标签: matlab

解决方案


另一种选择是内置的汉克尔矩阵,例如在您的情况下:

hankel(1:4,4:9)

或者在一般情况下对于向量a和块大小N

hankel(a(1:N),a(N:numel(a)))

我不知道 hankel 的实现是比@Luis Mendo 解决方案更好还是更差,所以测试一下哪个解决方案更适合你......


推荐阅读