How do I combine two index vectors to form a 2D index matrix?

5 ビュー (過去 30 日間)
Dean Ranmar
Dean Ranmar 2016 年 12 月 20 日
編集済み: Jan 2016 年 12 月 26 日
I have two methods for identifying which elements in a matrix have certain properties (e.g.; exceed a threshold).
ndx = Amat > THR; % matrix of threshold crossing locations
and:
[rdx, cdx] = find(Amat>THR); % vectors of threshold crossing locations
that I use for two different purposes [and actually apply to different matrices.] Results from the two methods are compared eventually. I'd like to take the two vectors (rdx, cdx) and convert them to a matrix so I can do an operation such as:
Adx = Amat(ndx); % matrix of threshold crossing amplitudes
which is done for the former case. I'm sure there's a simple way to take the two vectors and combine them to produce "pointer" matrix "ndx," but I haven't found it.
Help?
  1 件のコメント
Dean Ranmar
Dean Ranmar 2016 年 12 月 20 日
Of course "ndx" is a true/false matrix of same dimension as matrix Amat.

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

採用された回答

Jan
Jan 2016 年 12 月 20 日
編集済み: Jan 2016 年 12 月 26 日
Does not look elegant:
[rdx, cdx] = find(Amat > THR);
Index = sub2ind(size(Amat), rdx, cdx); % [EDITED, was ind2sub...]
ndx = false(size(Amat));
ndx(Index) = true;
  2 件のコメント
Dean Ranmar
Dean Ranmar 2016 年 12 月 20 日
Thanks! The key is the ind2sub function. Excellent.
Dean Ranmar
Dean Ranmar 2016 年 12 月 20 日
Actually, it should be sub2ind, not ind2sub. Thanks again. BTW, I should have neat rather than elegant and your solution is neat.

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

その他の回答 (1 件)

Mischa Kim
Mischa Kim 2016 年 12 月 20 日
Would this do the trick?
Adx = Amat(Amat(:)>THR(:))
  4 件のコメント
Dean Ranmar
Dean Ranmar 2016 年 12 月 20 日
sorry! I switched the index names on you: ndr == rdx and ndc == rdc.
Dean Ranmar
Dean Ranmar 2016 年 12 月 20 日
ndc == cdx

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

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by