如何从MATLAB中的给定输入数据生成以下矩阵和向量?

Laz*_*zer 5 matlab vector matrix

假设我有输入data = [1 2 3 4 5 6 7 8 9 10]num = 4.我想用这些来生成以下内容:

i = [1 2 3 4 5 6; 2 3 4 5 6 7; 3 4 5 6 7 8; 4 5 6 7 8 9]
o = [5 6 7 8 9 10]
Run Code Online (Sandbox Code Playgroud)

这基于以下逻辑:

length of data = 10
num = 4
10 - 4 = 6
i = [first 6; second 6;... num times]
o = [last 6]
Run Code Online (Sandbox Code Playgroud)

在MATLAB中自动执行此操作的最佳方法是什么?

gno*_*ice 10

这是使用函数HANKEL的一个选项:

>> data = 1:10;
>> num = 4;
>> i = hankel(data(1:num),data(num:end-1))

i =

     1     2     3     4     5     6
     2     3     4     5     6     7
     3     4     5     6     7     8
     4     5     6     7     8     9

>> o = i(end,:)+1

o =

     5     6     7     8     9    10
Run Code Online (Sandbox Code Playgroud)

  • 只是我的数据不会总是"1:10",所以我使用了`o = data(:,(num + 1:end));`.我正在考虑使用多个for循环来实现相同的目标.`hankel`更加优雅. (2认同)