How do you divide each row by its first nonzero element?

How you would divide each row by its first nonzero element? For example, if I have a matrix A=[1 9 7;0 2 4;0 0 5], I want it to be [1 9 7;0 1 2; 0 0 1] where the diagonals of the matrix are 1s. As you can see, I want the first row and all of its columns to be the same. Would it also be possible to have the code for this problem be 1 line?

2 Comments

What do you mean that you "want... all of its columns to be the same"?
I meant to say the elements of the first row of the matrix to be the same. Anyways, you answered my questions already and it works for me. Thank you!

Sign in to comment.

 Accepted Answer

>> A = [4,9,7;0,2,4;0,0,5];
>> B = bsxfun(@rdivide,A,diag(A));
>> B(1,:) = A(1,:)
B =
4 9 7
0 1 2
0 0 1

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!