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

1 view (last 30 days)
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
Stephen23
Stephen23 on 30 Oct 2017
What do you mean that you "want... all of its columns to be the same"?
jones matthew
jones matthew on 30 Oct 2017
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

Stephen23
Stephen23 on 30 Oct 2017
>> 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

Find more on Creating and Concatenating 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!