Diagonal of a non-squared martrix

25 ビュー (過去 30 日間)
Nikolas Spiliopoulos
Nikolas Spiliopoulos 2018 年 5 月 4 日
回答済み: Nikolas Spiliopoulos 2018 年 5 月 6 日
Hello all,
I have a matrix A=zeros(179,716)
and I am trying to put the value "1" in its diagonal
however it's not a squared matrix so I don;t know how to this!
any ideas?
thanks a lot

採用された回答

Nikolas Spiliopoulos
Nikolas Spiliopoulos 2018 年 5 月 6 日
Alright thanks a lot!!!!

その他の回答 (1 件)

Wick
Wick 2018 年 5 月 4 日
編集済み: Wick 2018 年 5 月 4 日
MATLAB has a built-in function for the identity matrix, 'eye'. There are two diagonals in a non-square matrix. We'll set both, one at a time. If you only want the first, don't use the second line.
A=zeros(179,716);
E = eye(179);
% Here's where we set the first diagonal
A(:,1:179) = E;
% we don't want to stop on the 1's already there
% so we use a max to keep the larger value
A(:,(end-179+1):end) = max(E, A(:,(end-179+1):end) );
% Your matrix is actually wide enough the second definition
% doesn't need the max, but if it was closer to a square you
% wouldn't want to stomp on the ones already there. Instead of
% a max command you could also add the subset of A to the identity
% matrix.
  3 件のコメント
Nikolas Spiliopoulos
Nikolas Spiliopoulos 2018 年 5 月 4 日
Thanks for the answer! However I realized that it doesn't put 1 for the columns : 180-537
Wick
Wick 2018 年 5 月 4 日
編集済み: Wick 2018 年 5 月 4 日
But that's not a diagonal. Diagonals start in corners. If you want the diagonal to repeat 4 times across the array you could use 'repmat' to make a 1,4 array of the identity matrix and overwrite the original. Actually, since all you want is the zeros and ones, you can start right there:
A = repmat(eye(179),1,4);
Edit, I suppose any diagonal is a diagonal. But I thought you meant the major diagonals. In a square that would be from top left to bottom right. In a rectangular array it would be top-left to bottom and bottom-right to the top.

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

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by