How can I generate a matrix as in the picture?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
xiyou fu
el 11 de Nov. de 2016
Editada: Andrei Bobrov
el 11 de Nov. de 2016

A is the matrix and n is an arbitrary number that larger than 3,thank you very much!
0 comentarios
Respuesta aceptada
Andrei Bobrov
el 11 de Nov. de 2016
Editada: Andrei Bobrov
el 11 de Nov. de 2016
n = 6; % Let n = 6
z = [-1 3 -3 1];
m = numel(z);
k = n-m+1;
A = full(spdiags(ones(k,1)*z,0:m-1,k,n));
other way with Communications System Toolbox:
n = 6; % Let n = 6
z = [-1 3 -3 1];
A = convmtx(z,n-numel(z)+1);
Más respuestas (1)
Walter Roberson
el 11 de Nov. de 2016
You can add together diag() calls
[diag(-1 * ones(1, n-3)), zeros(n-3,3)] + ...
[zeros(n-3, 1), diag(3 * ones(1, n-3)), zeros(n-3,2)] + ...
[zeros(n-3, 2), diag(-3 * ones(1, n-3)), zeros(n-3,1)] + ...
[zeros(n-3, 3), diag(1 * ones(1, n-3))]
0 comentarios
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!