How can I generate a matrix as in the picture?
1 view (last 30 days)
Show older comments

A is the matrix and n is an arbitrary number that larger than 3,thank you very much!
0 Comments
Accepted Answer
Andrei Bobrov
on 11 Nov 2016
Edited: Andrei Bobrov
on 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);
More Answers (1)
Walter Roberson
on 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 Comments
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!