5

Matlab には、相互にプロットする必要がある 2 つのデータ セットがあります。1 つは x 軸、もう 1 つは y 軸です。各セットのデータは異なる方法を使用して収集されたため、サンプリング レートが大幅に異なり、両方のセットで同じ数のデータ ポイントがなくなるまで、一方を他方に対してプロットできません。

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.5 秒で、B のサンプリング レートは 0.1 秒です。「-3s」(これはデータ内の何かを意味するので、その時点で開始する必要があることを意味します)で、1.5s のサンプル サンプリング レートで開始するためにdownsampleasを正常に使用できました。 downsample(B,15,10).

ところで、15点ごとに1点を選ぶのではなく、15点の平均を取る方法はあるのだろうか?downsample、私がそれを使用した方法は、15 番目のポイントごとに選択するだけです。ただし、代わりに 15 ポイントを平均してもらいたいと思います。これを行う方法はありますか?

単純な/小さいベクトルの for ループを作成して、それができるかどうかを確認しました。A = [1 2 3 4]A(1) と A(2) を平均し、次に A(3) と A(4) を平均するように、A が 2 つのエントリしか持たないようにデータを圧縮したいからです。

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

ただし、これは、A(2) と A(3) を平均化したくないため、希望どおりには機能しません。最初の 2 つのエントリを取得して平均化し、次に次の 2 つのエントリを取得してから平均化します。すぐ。

誰でも助けることができますか?

ありがとう

4

1 に答える 1

4

データAn-row 行列に再形成します。ここnで、 は平均サイズであり、適用meanして各列の平均を計算します。

A = [1 2 3 4]; %// data
n = 2; %// averaging size
P = mean(reshape(A,n,[]));
于 2015-01-08T10:44:32.243 に答える