How can I generate a matrix as in the picture?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
xiyou fu
il 11 Nov 2016
Modificato: Andrei Bobrov
il 11 Nov 2016

A is the matrix and n is an arbitrary number that larger than 3,thank you very much!
0 Commenti
Risposta accettata
Andrei Bobrov
il 11 Nov 2016
Modificato: Andrei Bobrov
il 11 Nov 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);
Più risposte (1)
Walter Roberson
il 11 Nov 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 Commenti
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!