How can I get the diagonal elements of a matrix to be 0's
Show older comments
How can I get the diagonal elements of a matrix to have all 0's and 1's everywhere else?
Accepted Answer
More Answers (1)
dpb
on 6 Jan 2016
x=~eye(N);
5 Comments
Walter Roberson
on 6 Jan 2016
Note: that would be a result of type logical rather than a numeric type. x = double(~eye(N)) would be double precision.
dpb
on 7 Jan 2016
That wasn't a a given constraint! :) But, yes, is so...
dpb
on 7 Jan 2016
"x = double(~eye(N)) would be double precision"
or
x = ~eye(N)+0
is what I'd probably actually write, being in favor of minimal keystrokes as a general rule...no idea which might have a performance advantage for increasing N.
Walter Roberson
on 7 Jan 2016
I would probably use +0 as well, but writing double() explicitly is clearer to people about what is being done and why. People tend to expect that adding 0 will leave everything unchanged...
dpb
on 8 Jan 2016
In the forum if I'd bothered to do the conversion I'd've added a comment on the purpose. As was, I figured the expression alone did satisfy the question and the remainder could be "exercise for the student"...
Categories
Find more on Matrix and Vector Construction 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!