フィルターのクリア

Checking if minimum of a matrix occurs on the diagonal

1 回表示 (過去 30 日間)
KAE
KAE 2018 年 10 月 4 日
編集済み: KAE 2018 年 10 月 4 日
For a matrix, I would like to check if the minimum value of each row is found on the diagonal. The minimum value can occur more than once within a row. Since the min command returns the index of the first occurrence of the minimum, min can miss later occurrences on the diagonal, as follows:
testMatrix = [ 1 3 5 1
2 0 4 6
3 9 2 7
-2 9 4 -2];
[~, iMin] = min(a)
iMin =
4 2 3 4
How can I check if the row minimum is found on the diagonal? I am working with a very large matrix in reality, so I would like to avoid looping down the rows.
  2 件のコメント
Adam
Adam 2018 年 10 月 4 日
編集済み: Adam 2018 年 10 月 4 日
Can you not do something like
diag( testMatrix ) == min( testMatrix )
?
I haven't put a whole lot of thought into it so there may be perfectly good reasons why you can't!
KAE
KAE 2018 年 10 月 4 日
This does not seem to check the diagonals, or maybe I am misunderstanding,
ans =
4×4 logical array
0 0 0 0
0 1 0 0
0 0 1 0
1 0 0 1

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

採用された回答

Julian Hapke
Julian Hapke 2018 年 10 月 4 日
with a slight modification of Adams comment:
diag(testMatrix) == min(testMatrix , [], 2)
min accepts the dimension in which you want the minimum, in this case you want the minimum of each row, so in direction 2 and check against the diagonal of the matrix
  1 件のコメント
KAE
KAE 2018 年 10 月 4 日
編集済み: KAE 2018 年 10 月 4 日
Works and returns a vector saying whether it is on the diagonal or not, which I realized is what I was looking for when I saw the output. Thanks!
Here it shows it returns zero for rows when the minimum is not on the diagonal.
testMatrixOneWrong = ...
[ 1 3 5 -2
2 0 4 6
3 9 2 7
-2 9 4 -2]
diag(testMatrixOneWrong) == min(testMatrixOneWrong, [], 2)
ans =
4×1 logical array
0
1
1
1

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

その他の回答 (0 件)

カテゴリ

Help Center および 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