2017-01-27 20 views
0

+inf-infという複数の無限値を持つ配列です。 -infをその配列に存在する最小値で置き換え、+infを同じ配列の最大値で置き換える方法。配列はある計算の出力ですので、最初はわかりません。しかし、例では配列をA=[inf, 1, 2, inf, 0, -4, -inf, -1, -inf]としています。ここでminとmaxは明らかに-4と2として与えられ、私はループを使って簡単に置き換えることができます。どのように計算結果の配列のためにそれを行う。私はあなたの貴重な提案に感謝します。-infをminで置き換え、+ infをmatlab配列の最大値で置き換えます。

答えて

7

Matlabには、論理インデックス作成という大きな能力があります。つまり、同じ長さのブール配列で配列をインデックスできます。

A=[inf, 1, 2, inf, 0, -4, -inf, -1, -inf] 

%Replace the values where A==-inf with the minimum real number. 
A(A==-inf) = min(A(isfinite(A))); 
%Replace the values where A==+inf with the maximum real number. 
A(A==inf) = max(A(isfinite(A))); 
+0

...あるいは_異なる_長:-)の(参照[この回答](http://stackoverflow.com/questions/1710299/corner-cases-unexpected-and-unusual-matlab/2462898# 2462898)、編集3) –

+0

クイック返信ありがとうございます.. –

関連する問題