0

Ns要素を含むMatlab配列があります。その配列の各要素について、その要素とその隣接要素(合計n個の値の平均)の加重平均を計算したいと思います。要素は周期的なデータから取得されるため、配列は円形と考えることができます。

次に、その要素の代わりに加重平均を格納し、配列をNd = Ns/nの長さの配列にダウンサンプリングしたいと思います。

理想的には、完全に重み付けされた制限に似たものを使用したいと思います。平均で隣接する要素よりも要素に重みを付けます。たとえば、n = 3の場合、要素に0.5の重みを付け、その隣接要素にそれぞれ0.25の重みを付けます。

ダウンサンプル関数を使用せずにMatlabでこれを行うための簡単で効率的な方法はありますか?私のコードは、リモートサーバー上の古いバージョンのMatlabと互換性がある必要があります。

4

1 に答える 1

0

探しているのは移動平均で、これはFIRフィルターで取得できます。xそれが配列であり、1次元であると仮定すると、次のfilterコマンドを使用できます。

y = filter(ones(1, n), 1, x);

結果をダウンサンプリングするには、インデックスを使用します。

y_downsampled = y(1:n:Ns);

簡単に言えば、ones(1, n)は重みを示します。1つの要素の重量を他の要素よりも大きくしたい場合は、好みに合わせて要素を変更します。あなたの例では、それをに変更し[0.25, 0.5, 0.25]ます。

配列が2次元の場合は、などの別の適切なフィルタリングコマンドを使用する必要がありますfilter2

于 2013-03-12T02:39:14.197 に答える