How to generate a hankel and toeplitz array of blocks from three series?

5 Ansichten (letzte 30 Tage)
How to generate a matrix of H and a matrix of T, and my matrix to generate these other two has dimension 3x5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
with the H 4x4 block matrix with columns vectors being
[1 6 11]' [2 7 12]' [3 8 13]' [4 9 14]'
[0 0 0 ]' [1 6 11]' [2 7 12]' [3 8 13]'
[0 0 0 ]' [0 0 0 ]' [1 6 11]' [2 7 12]'
[0 0 0 ]' [0 0 0 ]' [0 0 0 ]' [1 6 11]'
with the T 4x4 block matrix with columns vectors being
[2 7 12]' [3 8 13]' [4 9 14]' [5 10 15]'
[3 8 13]' [4 9 14]' [5 10 15]' [0 0 0 ]'
[4 9 14]' [5 10 15]' [0 0 0 ]' [0 0 0 ]'
[5 10 15]' [0 0 0 ]' [0 0 0 ]' [0 0 0 ]'
Thus, the matrices of H and T have this behavior described in the last two matrices. Thanks any help!
PS:I did a previous post only that I had not considered the block array and Matt J was very kind in helping me, but actually to be able to perform the system ID would have that array of blocks.
In this case as I would for instead of just picking the first row, I get all the row and first column, all rows and second column and so on until the next but last column, in the case of the Toeplitz array
H=hankel(A(1,2:4))
T=triu(toeplitz(A(1,1:3)))

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 7 Jul. 2019
Bearbeitet: Andrei Bobrov am 7 Jul. 2019
A = [1 2 3 4 5
6 7 8 9 10
11 12 13 14 15 ];
[m,n] = size(A);
C = num2cell(A,1);
ii = triu(toeplitz(1:n-1));
H = repmat({zeros(m,1)},n-1);
lo = triu(true(n-1));
H(lo) = C(ii(lo))
jj = hankel(2:n);
T = repmat({zeros(m,1)},n-1);
lo = jj > 0;
T(lo) = C(jj(lo))

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by