How to add zeros diagonally in a matrix?
9 views (last 30 days)
Show older comments
I am having a 4*5 matrix. Now, I need to add '0' diagonally and convert the matrix into 5*5. Thank you in advance.
Example:
A=[2 2 1 3 2
1 3 3 1 2
3 1 4 4 1
2 2 1 3 3]
Expected output:
B=[ 0 2 1 3 2
2 0 3 1 2
1 3 0 4 1
3 1 4 0 3
2 2 1 3 0]
0 Comments
Accepted Answer
Stephen23
on 14 Dec 2022
A = [2,2,1,3,2;1,3,3,1,2;3,1,4,4,1;2,2,1,3,3]
S = size(A)+[1,0];
B = zeros(S);
B(~eye(S)) = A
More Answers (1)
Jiri Hajek
on 14 Dec 2022
Hi, MATLAB has functions that can extract upper and lower triangular parts of a matric, rest is just adding them into a zero pre-allocated matrix B:
A = randn(4)
Au = triu(A);
Al = tril(A);
B = zeros(5);
B(1:4,2:end) = Au;
B(2:end,1:4) = B(2:end,1:4)+Al
See Also
Categories
Find more on Operating on Diagonal 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!