Signal Processing Toolbox | ![]() ![]() |
resample
表示
y=
resample(x,p,q) y=
resample(x,p,q,n) y=
resample(x,p,q,n,beta) y=
resample(x,p,q,b) [y,b]=
resample(x,p,q)
詳細
y
は、ポリフェーズフィルタを使って、オリジナルのサンプリングレートの =
resample(x,p,q) p/q
倍で、ベクトルx
のデータ列をリサンプリングします。y
は、x
の長さのceil(length(x)*p/q)
倍になります。p
およびq
は、正の整数でなければなりません。x
が行列の場合、resample
はx
の列方向の処理を行います。
resample
は、リサンプリングプロセスでx
にアンチエイリアス(ローパス)FIRフィルタを適用します。これは、Kaiserウィンドウを使ったfirls
で設計します。
y
は、カレントサンプル =
resample(x,p,q,n) x(k)
のデータ列の一方向のn項を使用してリサンプリングを実行します。resample
が使用するFIRフィルタの長さはnに比例し、n
の値を大きくすると精度は高くなりますが計算時間が必要になります。n
のデフォルト値は10です。
n = 0
にすると、resample
は最近傍近似を使用します。
y(k) =
x(round((k-1)*q/p)+1)
ここで、x
のインデックスがlength(x)
よりも大きい場合、y(k) =
0です。
y
は、 =
resample(x,p,q,n,beta) resample
がローパスフィルタを設計するのに使用するKaiserウィンドウの設計パラメータとしてbeta
を使用します。beta
のデフォルト値は5です。
y
は、フィルタ係数ベクトル =
resample(x,p,q,b) b
でx
をフィルタ処理します。
[y,b]
は、リサンプリング過程で =
resample(x,p,q) x
に適用されるフィルタの係数を含んだベクトルb
を出力します。
例題
単純な線形列をオリジナルのサンプリングレートの3/2倍でリサンプリングします。
fs1=
10; % オリジナルのサンプリング周波数(Hz) t1=
0:1/fs1:1; % 時間ベクトル x=
t1; % 線形列を定義 y=
resample(x,3,2); % リサンプリングを実行 t2=
(0:(length(y)-1))*
2/(3*
fs1); % 新しい時間ベクトル plot(t1,x,'*',t2
,y,'o',-0.5:0.01:1.5,-0.5:0.01:1.5,':') legend('original','resampled'); xlabel('Time')
出力y
の最後の数点が不正確になっていることに注目してください。そのフィルタリング過程で、resample
は、x
で与えられたサンプルの範囲外では、サンプルをゼロと見なします。したがって、データ列x
の終点でゼロから大きく偏るとy
の終点で不正確になる可能性があります。つぎの2つのプロットに、resample
のこの一方向適用による影響を示します。
x=
[1:10 9:-1:1]; y=
resample(x,3,2); subplot(2,1,1); plot(1:19,x,'*
',(0:28)*
2/3 + 1,y,'o'); title('Edge Effects Not Noticeable'); legend('original','resampled'); x=
[10:-1:1 2:10]; y=
resample(x,3,2); subplot(2,1,2); plot(1:19,x,'*
',(0:28)*
2/3 + 1,y,'o') title('Edge Effects Very Noticeable'); legend('original','resampled');
参考
|
データ列に対するサンプリングレートの低減(間引き)
|
|
条件付き最小2乗線形位相FIRフィルタの設計 |
|
整数要素によるサンプリングレートの増加(補間) |
|
1次元データ補間(MATLAB Function Referenceを参照)
|
|
補間FIRフィルタの設計 |
|
Kaiserウィンドウ |
|
キュービックスプライン補間(MATLAB Function
Referenceを参照) |
|
FIRフィルタの適用とサンプリングレート変換 |
![]() |
remezord | residuez | ![]() |