2015-01-08 20 views
5

Matlabには、互いにプロットする必要のある2つのデータセットがあります.1つはx軸、もう1つはyaxisです。各セットのデータは異なる方法で収集されたので、サンプリングレートは大きく異なり、両方のセットで同じ数のデータポイントがなくなるまで、私はもう一方に対してプロットすることはできません。平均化によってMatlabのデータをダウンサンプリングする

downsample関数Matlabを使用して、Matlabのデータを非常に簡単にダウンサンプリングできます。

A = [-3 -1.5 0 1.5 3 4.5 6 7.5 9...] (goes on until 21) 
B = [-3.9 -3.8 -3.7 -3.6 -3.5 -3.5 -3.3 -3.2 -3.1 -3.0 -2.9 -2.8...] (goes on until 22) 

Aのサンプリングレートは1.5sであり、Bのサンプリングレートは0.1sです。私は首尾よくdownsampledownsample(B,15,10)として使用して、同時に "-3s"(これは私のデータに何かを意味するので、私はその時点で開始する必要があります)を開始し、サンプルサンプリングレート1.5秒。

しかし、15ポイントごとに1ポイントを選ぶのではなく、15ポイントの平均を取る方法があるかどうかは分かりませんでしたか? downsample、それは私がそれを使用した方法はちょうどすべての15番目のポイントを選択します。しかし、私は代わりに15ポイントを平均したいと思う。これを行う方法はありますか?

私はそれを行うことができるかどうかを確認するために、単純な/小さいベクトルのforループを書きました。 A = [1 2 3 4]については、AはA(1)とA(2)、A(3)とA(4)の平均をとるように、Aには2つのエントリしかないようにデータを凝縮したいと考えています。私はそれがA(2)とA(3)を平均化したくないので、それを望むように

A = [1 2 3 4] 
for i = 1:3 
    P(i) = mean(A(i:i+1)) 
end 

これは、しかし、動作しません。私は最初の2つのエントリを取って平均し、次の2つのエントリを取って平均します。そうです。

誰でも手伝いできますか?

おかげ

+0

はいああ...申し訳ありません。 ..私は私の検索語がタイトルと異なっていたと思う既存の答えられた質問を探すことを試みた。 –

+1

ええ、あなたは達成したい理由、達成したいことを非常に詳細に説明しました。可能な重複は関連するトピックでさえなかった、私はちょうどそれを思い出した。心配しないでください、まだ良い質問です。 – Nras

答えて

4

nが平均サイズであるn行×行列、へAあなたのデータを再形成し、各列の平均値を計算するためにmeanを適用します。

A = [1 2 3 4]; %// data 
n = 2; %// averaging size 
P = mean(reshape(A,n,[])); 
+0

ありがとう、それは動作します! –

関連する問題