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 件のコメント

Stephen23
Stephen23 2017 年 10 月 30 日
What do you mean that you "want... all of its columns to be the same"?
jones matthew
jones matthew 2017 年 10 月 30 日
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!

サインインしてコメントする。

 採用された回答

Stephen23
Stephen23 2017 年 10 月 30 日

0 投票

>> 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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by