私はMATLABに不慣れなので、初心者の質問で申し訳ありません:
大量のデータを格納する大きなベクトル (905350 要素) があります。私は標準偏差と平均値を持っています。今、平均値から 1 つの標準偏差の上/下にあるすべてのデータ ポイントを切り取りたいと考えています。方法がわかりません。私が収集したものから、ある種の二重ループを作成する必要がありますか?
それは次のようなものです: mean-std < 欲しいデータ < mean + std
単純に要素単位の論理 AND を使用できます。
m = mean(A);
sd = std(A);
B = A( A>m-sd & A<m+sd );
また、次のことを知って|x|<c iff -c<x<cいれば、次のように両方を 1 つに組み合わせることができます。
B = A( abs(A-m)<sd );
y = x(x > mean-std);
y = y(y < mean+std);
動作するはずです。詳細については、 FINDを参照してください。上記のコードでは、FIND コマンドが暗黙的に使用されています。
A を元のベクトルとして、B を最終的なベクトルとして使用します。
B = sort(A)
B = B(find(B > mean-std,1,'first'):find(B < mean+std,1,'last'))