How to Delete Diagonal Elements from a Matrix and Reshape It?

27 views (last 30 days)
Hi all,
I have a matrix M that I would like to remove diagonal entries from and reshape it. For reference, all diagonal elements that I want to remove are 1s and the dimensions of this matrix are N x N (where N can be as large as 90) so I will give an smaller example below:
For some of my data, however, the diagonal entries are occasionally NaN. The diagonal entires thus, will either be 1 or NaN.
Thanks
M = [ 1 4 2 3
5 1 2 3
3 3 NaN 3
4 5 3 1 ]
% Ideal New Matrix after
M2 = [ 5 4 2 3
3 3 2 3
4 5 3 3 ]

Answers (1)

David Hill
David Hill on 7 Nov 2020
a=size(M,1);
M(1:a+1:end)=[];
B=reshape(M,a-1,[]);

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!