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するを使用できます。nanmeanNaN
y = nanmean(X)は、NaN値を削除した後に計算されたXの平均です。
行列でも機能しますが、sを削除すると機能しませんNaN。