フィルターのクリア

help in adding a descending order a symetric matric

1 回表示 (過去 30 日間)
ana take
ana take 2017 年 1 月 16 日
コメント済み: ana take 2017 年 1 月 17 日
Hello! I want to put in a descending order just the part upper the main diagonal in a symmetric matrix and to get the index of those elements. What should I change in this code?
function [values,i,j] = max(A,n)
[a, linIdx] = sort(A(:),'descend');
values = a(1:n);
[i,j] = ind2sub(size(A),linIdx(1:n));
  1 件のコメント
Walter Roberson
Walter Roberson 2017 年 1 月 17 日
Please do not call your function "max" as that interferes with using the key MATLAB routine "max"

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

採用された回答

John Chilleri
John Chilleri 2017 年 1 月 16 日
編集済み: John Chilleri 2017 年 1 月 16 日
Hello,
Here's a very inelegant solution, but it does the job. I'm making all values below the main diagonal -Inf so that they're guaranteed to not be apart of the a(1:n) when you sort, assuming your original matrix does not contain -Infinities (this also includes the main diagonal, I can change it to exclude it if necessary).
function [values,i,j] = whateveryouwanttocallit(A,n)
low = tril(A-Inf,-1)+1;
A = low.*A;
[a, linIdx] = sort(A(:),'descend');
values = a(1:n);
[i,j] = ind2sub(size(A),linIdx(1:n));
end
Hope this helps!

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2017 年 1 月 17 日
See https://www.mathworks.com/matlabcentral/newsreader/view_thread/278808 for information on extracting the upper diagonal.
However, the question arises of which index you are looking for. Are you looking for an index relative to the vector of extracted values, or are you looking for the index into the original matrix?
  1 件のコメント
ana take
ana take 2017 年 1 月 17 日
index into the original matrix

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

カテゴリ

Help Center および File ExchangeOperating on Diagonal Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by