0

950000x1たとえば、値の配列があります[1e15 2.5e12 ...etc]。しかし、平均値を取得するために次のことを行うと、値はとして取得されNaNます。

avg=mean(g1)

このエラーが発生する理由を理解できません。

4

2 に答える 2

2

次のコードは私のマシン(Core i7、16GB RAM、Linux Mint v12、Matlab 2012b)で正常に実行されます。

T = 1e9;
Vec = ones(T, 1) * 1e200;
M = mean(Vec);

これは、値の配列にNaNどこかが含まれていることを示しています。配列に倍精度浮動小数点よりも大きい数が含まれている場合でも(つまり、1e320程度)、mean関数はInfではなく、を返すことに注意してくださいNaN

any(isnan(Vec))アレイを試してください。を返す場合は、1が含まれていることがわかりますNaN。含まれている場合は、次のコードでNaNを削除します。

Vec(isnan(Vec)) = [];

これでクエリが解決したと思われる場合は、回答の横にあるチェックマークをクリックしてください。乾杯!

于 2012-11-11T04:28:48.843 に答える
1

NaN関数をクエリする前にsを削除する代わりに、平均を計算するときに値を無視meanするを使用できます。nanmeanNaN

nanmean

y = nanmean(X)は、NaN値を削除した後に計算されたXの平均です。

行列でも機能しますが、sを削除すると機能しませんNaN

于 2012-11-11T19:59:55.120 に答える