このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。
この例では、ローパス FIR ナイキスト フィルターの設計法を示します。また、これらのフィルターを、レイズド コサイン フィルターおよびルート レイズド コサイン フィルターと比較します。これらのフィルターは、デジタル伝送システムのパルス整形に幅広く使用されます。また、内挿/間引きやフィルター バンクにも使用されます。
このプロットは、等リップル ナイキスト フィルターとレイズド コサイン フィルターの振幅応答を示しています。どちらのフィルターも 60 の次数と 0.5 のロールオフ ファクターをもっています。等リップルフィルターには最適等リップル阻止帯域があるので、同じフィルター次数と遷移幅においてより大きな阻止帯域の減衰をもっています。レイズド コサイン フィルターは、解析的インパルス応答を切り捨てることで取得され、どのような見方をしても最適とは言えません。
NBand = 4; N = 60; % Filter order R = 0.5; % Rolloff factor TW = R/(NBand/2); % Transition Bandwidth f1 = fdesign.nyquist(NBand,'N,TW',N,TW); eq = design(f1,'equiripple','Zerophase',true,'SystemObject',true); coeffs = rcosdesign(R,N/NBand,NBand,'normal'); coeffs = coeffs/max(abs(coeffs))/NBand; rc = dsp.FIRFilter('Numerator',coeffs); fvt = fvtool(eq,rc,'Color','white'); legend(fvt,'Equiripple NYQUIST design','Raised Cosine design');
実際に、この例で同様の減衰を得るには、レイズド コサイン設計の次数を約 1400 まで増加しなければなりません。
ここではインパルス応答を比較します。どちらの場合のインパルス応答も、4 番目のサンプルごとにゼロになることに注目してください (中央のサンプルを除く)。ナイキスト フィルターは、L 次帯域フィルターとも呼ばれます。カットオフ周波数が Pi/L で、インパルス応答が L 番目のサンプルごとにゼロになるためです。ここでは 4 次帯域フィルターを示しています。
f1.FilterOrder = 38; eq1 = design(f1,'equiripple','Zerophase',true,'SystemObject',true); coeffs = rcosdesign(R,f1.FilterOrder/NBand,NBand,'normal'); coeffs = coeffs/max(abs(coeffs))/NBand; rc1 = dsp.FIRFilter('Numerator',coeffs); fvt = fvtool(eq1,rc1,'Color','white','Analysis','Impulse'); legend(fvt,'Equiripple NYQUIST','Raised Cosine'); title('Impulse response, Order=38, Rolloff = 0.5');
等リップル設計を使用すると、フィルターの阻止帯域の勾配を制御できます。たとえば、次の設計の減衰の勾配は、0、20、および 40 dB/(ラジアン/サンプル) になります。
f1.FilterOrder = 52; f1.Band = 8; f1.TransitionWidth = .05; eq1 = design(f1,'equiripple','SystemObject',true); eq2 = design(f1,'equiripple','StopbandShape','linear',... 'StopbandDecay',20,'SystemObject',true); eq3 = design(f1,'equiripple','StopbandShape','linear',... 'StopbandDecay',40,'SystemObject',true); fvt = fvtool(eq1,eq2,eq3,'Color','white'); legend(fvt,'Slope=0','Slope=20','Slope=40')
全体的なナイキスト フィルターの最小位相スペクトル因子 (周波数領域内の平方根) を設計できます。このスペクトル因子は、整合フィルター アプリケーションにおけるルート レイズド コサイン フィルターと同じように使用できます。フィルターの平方根は送信側に配置され、他方の平方根は受信側に配置されます。
f1.FilterOrder = 30; f1.Band = NBand; f1.TransitionWidth = TW; eq1 = design(f1,'equiripple','Minphase',true,'SystemObject',true); coeffs = rcosdesign(R,N/NBand,NBand); coeffs = coeffs / max(coeffs) * (-1/(pi*NBand) * (pi*(R-1) - 4*R)); srrc = dsp.FIRFilter('Numerator',coeffs); fvt = fvtool(eq1,srrc,'Color','white'); legend(fvt,'Minimum-phase equiripple design',... 'Square-root raised-cosine design');
レイズド コサイン フィルターの応答は、ロールオフ ファクターが減少するにつれて改善されます (ここではロールオフ = 0.2 の場合が示されています)。これは、インパルス応答の切り捨てに使用される矩形ウィンドウの周波数応答のメインローブが狭いためです。
f1.FilterOrder = N; f1.TransitionWidth = .1; eq1 = design(f1,'equiripple','Zerophase',true,'SystemObject',true); R = 0.2; coeffs = rcosdesign(R,N/NBand,NBand,'normal'); coeffs = coeffs/max(abs(coeffs))/NBand; rc1 = dsp.FIRFilter('Numerator',coeffs); fvt = fvtool(eq1,rc1,'Color','white'); legend(fvt,'NYQUIST equiripple design','Raised Cosine design');
ナイキスト フィルターは、切り捨てられ、ウィンドウが適用されたインパルス応答方法を使用して設計することもできます。これは、レイズド コサイン設計に代わるもう 1 つの設計です。たとえば、カイザー ウィンドウ方法を使用して、次の初期仕様を満たすフィルターを設計できます。
f1.TransitionWidth = TW; kaiserFilt = design(f1,'kaiserwin','SystemObject',true);
カイザー ウィンドウ設計が仕様を満たすには、等リップル設計と同じ次数 (60) が必要です(これに反して、阻止帯域の仕様を満たすには、1400 もの次数のレイズド コサイン フィルターが必要であったことを思い出してください)。
fvt = fvtool(eq,rc,kaiserFilt,'Color','white'); legend(fvt,'Equiripple design',... 'Raised Cosine design','Kaiser window design');
デジタル データ伝送に加えて、ナイキスト フィルターは内挿の目的にも適しています。その理由は、前述のように、L サンプルごとにゼロのサンプルが得られるためです (中央のサンプル除く)。これには 2 つの利点があります。これらの利点はポリフェーズ表現を見ると明らかになります。
fm = fdesign.interpolator(4,'nyquist'); kaiserFilt = design(fm,'kaiserwin','SystemObject',true); fvt = fvtool(kaiserFilt,'Color','white'); fvt.PolyphaseView = 'on';
ポリフェーズ サブフィルター No. 4 はオールパス フィルターで、純粋な遅延になります (FVTool でインパルス応答を選択するか、FVTool でフィルター係数を見てください)。このため、以下が成り立ちます。1. その乗数は、そのポリフェーズ分岐の効率的な実装につながる乗数を除き、すべてゼロになります。2. 入力サンプルは、フィルターが理想的でなくても変更せずに内挿フィルターに渡されます。