私は比較する必要がある長さが異なる2つの配列(異なるサンプリングレートのため)を持っています。私は長さの小さいものと一致するように大きな配列をダウンサンプリングしたいと思いますが、因子は整数ではなく小数です。例えばMATLAB:2つの配列を異なる長さで比較する
:
a =
1 1.375 1.75 2.125 2.5 2.875 3.25
b =
1 2 3
は、長さに合わせて、これらの配列を操作する方法はありますか?
私は比較する必要がある長さが異なる2つの配列(異なるサンプリングレートのため)を持っています。私は長さの小さいものと一致するように大きな配列をダウンサンプリングしたいと思いますが、因子は整数ではなく小数です。例えばMATLAB:2つの配列を異なる長さで比較する
:
a =
1 1.375 1.75 2.125 2.5 2.875 3.25
b =
1 2 3
は、長さに合わせて、これらの配列を操作する方法はありますか?
これは、interp1
を賢明に使用して簡単に行うことができます。そのトリックは、補間に使用されるキーポイントが、と呼ぶa
にある1から最大値までの配列であり、補間されたキーポイントは、最初のポイントが1、最後のポイントポイントはN
で、b
と同数のポイントを均等に割ります。
は、簡単に言えば:
anew = interp1(1:numel(a), a, linspace(1, N, numel(b)));
linspace
たちはb
内の要素の合計数として決定したいできるだけ多くのポイントのためにN = numel(a)
から1から直線的に増加する配列を生成します。これは正確に、b
の長さに一致するa
のダウンサンプリングされたバージョンを与える右のキーポイントを指定しますが、補間が必要です。デフォルトの補間方法は線形です。あなたが提供a
からのサンプル入力を使用して
、我々が得る:
>> anew
anew =
1.0000 2.1250 3.2500
パーフェクト。 **ありがとうございます。 – Bensa
全く問題ありません。がんばろう! – rayryeng