How to add zeros diagonally in a matrix?

6 ビュー (過去 30 日間)
ASHA PON
ASHA PON 2022 年 12 月 14 日
コメント済み: ASHA PON 2022 年 12 月 14 日
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]

採用された回答

Stephen23
Stephen23 2022 年 12 月 14 日
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 件のコメント
ASHA PON
ASHA PON 2022 年 12 月 14 日
Thank you for the reply. This is what i needed.

サインインしてコメントする。

その他の回答 (1 件)

Jiri Hajek
Jiri Hajek 2022 年 12 月 14 日
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 件のコメント
ASHA PON
ASHA PON 2022 年 12 月 14 日
Thank you for the reply. But i am getting error in matrix dimension mismatch.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeOperating on Diagonal Matrices についてさらに検索

タグ

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by