How to add zeros diagonally in a matrix?

5 Ansichten (letzte 30 Tage)
ASHA PON
ASHA PON am 14 Dez. 2022
Kommentiert: ASHA PON am 14 Dez. 2022
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]

Akzeptierte Antwort

Stephen23
Stephen23 am 14 Dez. 2022
A = [2,2,1,3,2;1,3,3,1,2;3,1,4,4,1;2,2,1,3,3]
A = 4×5
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
B = 5×5
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
  1 Kommentar
ASHA PON
ASHA PON am 14 Dez. 2022
Thank you for the reply. This is what i needed.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jiri Hajek
Jiri Hajek am 14 Dez. 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
  1 Kommentar
ASHA PON
ASHA PON am 14 Dez. 2022
Thank you for the reply. But i am getting error in matrix dimension mismatch.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by