950000x1
たとえば、値の配列があります[1e15 2.5e12 ...etc]
。しかし、平均値を取得するために次のことを行うと、値はとして取得されNaN
ます。
avg=mean(g1)
このエラーが発生する理由を理解できません。
次のコードは私のマシン(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)) = [];
これでクエリが解決したと思われる場合は、回答の横にあるチェックマークをクリックしてください。乾杯!
NaN
関数をクエリする前にsを削除する代わりに、平均を計算するときに値を無視mean
するを使用できます。nanmean
NaN
y = nanmean(X)は、NaN値を削除した後に計算されたXの平均です。
行列でも機能しますが、sを削除すると機能しませんNaN
。