フィルターのクリア

Max/Min of nonzero rows/cols

11 ビュー (過去 30 日間)
Edward Umpfenbach
Edward Umpfenbach 2012 年 4 月 12 日
コメント済み: Dan 2015 年 12 月 28 日
I have a Matrix, A.
I want to find the max and min for every row and column in A, excluding the zero entries.
I have coded it using For loops, but it is too slow. I need it to be all vectorized. Any help is greatly appreciated.
  1 件のコメント
Dan
Dan 2015 年 12 月 28 日
A = matrix with some zero entries . Indzero = find( A== 0); B=A; B(Indzero) = max(max(A))+1; Min(B,[],1) B(Indzero) = min(min(A))-1; Max(B,[],1)
U can use this sort of logic maybe . u can also go at it by gpu processing or mexing for faster results ( this is exactly the type of probelms where u get the best rests with gpus Nd mexing )

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

採用された回答

Richard Brown
Richard Brown 2012 年 4 月 12 日
B = A;
B(B == 0) = NaN;
colMax = max(B);
colMin = min(B);
rowMax = max(B, [], 2);
rowMin = min(B, [], 2);
edit: missed the bit about the zero entries
  1 件のコメント
Edward Umpfenbach
Edward Umpfenbach 2012 年 4 月 12 日
Thank you. I didn't think to change the zeros to NaN so that they didn't mess up the min operation.

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

その他の回答 (1 件)

Geoff
Geoff 2012 年 4 月 12 日
When you say 'for every row and column', do you mean a single max and min for the entire matrix? This would do it:
nzmin = min(A(A ~= 0));
nzmax = max(A(A ~= 0));
[edit]
Note that if you have float data, you might want to consider values 'near' zero:
ztol = eps(max(A(:)));
nz = A < -ztol | A > ztol; % select non-zeros
nzmin = min(A(nz));
nzmax = max(A(nz));
It's refreshing to use a proliferation of 'nz', since it's my nationality =)
  3 件のコメント
Geoff
Geoff 2012 年 4 月 12 日
My heart's in Dunedin. But I moved up to Auckland to get away from Animation Research Ltd ;-) You're a Canterbury lad, right?
Richard Brown
Richard Brown 2012 年 4 月 12 日
I am indeed, wobbles and all :)

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

カテゴリ

Help Center および File ExchangeParallel Computing についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by