Как создать следующую матрицу и вектор из заданных входных данных в MATLAB?

Предположим, что у меня есть входы 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]

который основан на следующей логике:

length of data = 10
num = 4
10 - 4 = 6
i = [first 6; second 6;... num times]
o = [last 6]

Каков наилучший способ автоматизации этого в MATLAB?

1 ответ

Здесь один из вариантов использует функцию 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

licensed under cc by-sa 3.0 with attribution.