Add a diagonal of zeros to a matrix in MATLAB
15 次查看(过去 30 天)
显示 更早的评论
Let
M1 = [ 1 2 3 4
2 5 4 2
3 4 5 1
4 2 1 2 ]
a diagonal matrix.
I want to add a diagonal of zeros where
M1'= [ 0 1 2 3 4
1 0 5 4 2
2 5 0 5 1
3 4 5 0 2
4 2 1 2 0 ]
So I keep the original matrix and just add the diagonal of zeros. So size(M1) = (4x4) ans size (M1')=(5x5)
I tried "
M1' = [tril(M1,-1) zeros(N, 1)] + [zeros(N,1) triu(M1)];
" But this won't work because it changes the diagonal of the original matrix.
采纳的回答
Asad (Mehrzad) Khoddam
2020-12-25
You can use a loop like this:
M1 = [ 1 2 3 4
2 5 4 2
3 4 5 1
4 2 1 2 ];
N=size(M1,1);
M2=zeros(N+1,N+1);
for i=0:N-1
M2 = M2 + diag(diag(M1,-i),-i-1)+ diag(diag(M1,i),i+1);
end
M2
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!