主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

MATLABでのローパスフィルター設計

この例では,ローパスフィルターの設計法を示します。DSP系统工具箱™ の最も一般的に使用されるいくつかのコマンド ライン ツールを紹介します。ここで示す設計は、いずれもフィルター ビルダー アプリを使用して実装することもできます。その他の設計オプションについては、ローパス冷杉フィルターの設計を参照してください。

はじめに

ローパスフィルターを設計するときは,最初に冷杉フィルターとIIRフィルターのどちらを設計するかを決めます。一般に,位相応答の線形性が重要な場合は冷杉フィルターを選択します。冷杉フィルターは,一般に量子化の影響に対するロバスト性に優れているため,固定小数点の実装にもよく使用される傾向にあります。また、冷杉フィルターはパイプライン化に適しているため,FPGAやASICなどの多くの高速な実装にも使用されています。IIRフィルター(特に双二次フィルター)は,位相の線形性が問題にならないアプリケーション(オーディオ信号処理など)で使用されます。IIRフィルターは,通常,設計仕様を冷杉フィルターよりも少ない係数で満たせるという点で計算効率に優れています。また,IIRフィルターには,過渡応答が短く,群遅延が小さいという傾向もあります。ただし,最小位相のマルチレートの設計を使用すれば,群遅延や計算効率の点で冷杉フィルターもIIRフィルターと同等になります。

冷杉ローパス設計——フィルター次数の指定

実際の状況においては,フィルター次数を指定しなければならないことがよくあります。たとえば,ターゲットのハードウェアでフィルター次数が特定の数に制約されている場合があります。また,実装に使用できる計算の割り当て (MIPS) を計算した結果、フィルター次数が制限される場合もよくあります。Signal Processing Toolbox の FIR 設計関数 (fir1firpmfirls)では,いずれも指定した次数のローパスフィルターを設計できます。DSP系统工具箱の関数で、指定した次数のローパス FIR フィルターの設計によく使用されるのはfirceqripです。この関数は,指定された通過帯域/阻止帯域リップルの値と指定された通過帯域エッジ周波数で最適な等リップルローパス/ハイパス冷杉フィルターを設計します。阻止帯域エッジ周波数は設計の結果から決まります。

48 kHzでサンプリングされるデータに対するローパス冷杉フィルターを設計します。通過帯域エッジ周波数は8 kHzです。通過帯域リップルは0.01 dB,阻止帯域の減衰量は80分贝です。120年フィルター次数をに制約します。

N = 120;Fs = 48 e3;Fp = 8 e3;美联社= 0.01;Ast = 80;

通過帯域リップルと阻止帯域リップルの線形単位の最大偏差を求めます。

Rp = (10^(Ap/20) - 1)/(10^(Ap/20) + 1);Rst = 10 ^ (ast / 20);

firceqripを使用してフィルターを設計し,振幅周波数応答を表示します。

NUM = firceqrip(N,Fp/(Fs/2),[Rp Rst],“passedge”);fvtool (NUM“Fs”Fs)

結果の阻止帯域エッジ周波数は約9.64 kHzになります。

最小次数設計

最適な等リップルフィルターを設計するためのもう1つの関数にfirgrがあります。firgrでは,通過帯域/阻止帯域リップルの制約に加えて指定した遷移幅も満たすフィルターを最小のフィルター次数で設計できます。たとえば,阻止帯域エッジ周波数を10 kHzと指定すると,結果のフィルターはfirceqripで設計される120次のフィルターではなく100次のフィルターになります。フィルター次数は遷移帯域が大きいほど小さくなります。

阻止帯域エッジ周波数を10 kHzと指定します。通過帯域リップルが0.01 dBで阻止帯域の減衰量が80分贝の最小次数の冷杉フィルターを取得します。

置= 10 e3;NumMin = firgr (“minorder”,[0 Fp/(Fs/2) Fst/(Fs/2) 1], [1 1 0 0],[Rp,Rst]);

firgrで取得した最小次数の冷杉フィルターとfirceqripで設計した120次フィルターの振幅周波数応答をプロットします。最小次数設計のフィルターの次数は100になります。予想どおり120次フィルターの遷移領域は次数が100のフィルターよりも狭くなります。

hvft = fvtool (NUM 1 NumMin 1“Fs”Fs);传奇(hvft“N = 120”“N = 100”

データのフィルター処理

フィルターをデータに適用するには,过滤器コマンドを使用するか,dsp。FIRFilterを使用します。dsp。FIRFilterには,ループで実行する際に状態を管理できるという利点があります。また,dsp。FIRFilterには固定小数点機能があり,Cコード生成,高密度脂蛋白コード生成,手臂®®皮层Mおよび手臂皮层に最適化されたコード生成もサポートされます。

120次冷杉ローパスフィルターを使用して,ゼロ平均と単位標準偏差をもつ10秒間のホワイトノイズを256サンプルのフレームでフィルター処理します。スペクトルアナライザーで結果を表示します。

LP_FIR = dsp。FIRFilter (“分子”, NUM);SA = dsp。简介(“SampleRate”Fs,“SpectralAverages”5);抽搐Toc < 10 x = randn(256,1);y = LP_FIR (x);步骤(SA), y);结束

dsp。LowpassFilterの使用

firceqripおよびfirgrdsp。FIRFilterと組み合わせて使用する代わりに,dsp。LowpassFilterを使用することもできます。基本的に,dsp。LowpassFilterは2つのステップのプロセスを1つにまとめたものです。dsp。LowpassFilterには,固定小数点のサポート,Cコード生成のサポート,高密度脂蛋白コード生成のサポート,および手臂皮层コード生成のサポートについて,dsp。FIRFilterと同じ利点があります。

48 kHzでサンプリングされるデータに対するローパス冷杉フィルターを設計します。通過帯域エッジ周波数は8 kHzです。通過帯域リップルは0.01 dB,阻止帯域の減衰量は80分贝です。120年フィルター次数をに制約します。仕様に基づいてdsp。FIRFilterを作成します。

LP_FIR = dsp。LowpassFilter(“SampleRate”Fs,...“DesignForMinimumOrder”假的,“FilterOrder”N...“PassbandFrequency”《外交政策》,“PassbandRipple”据美联社,,“StopbandAttenuation”, Ast);

LP_FIRの係数は全国矿工工会の係数と同じです。

NUM_LP =特遣部队(LP_FIR);

前の例に示したように,LP_FIRを使用してデータを直接フィルター処理できます。また,FVTool を使用してフィルターを解析したり、测量を使用して応答を測定したりできます。

fvtool (LP_FIR“Fs”Fs);测量(LP_FIR)
ans =采样率:48 kHz通频带边缘:8 kHz 3-dB点:8.5843 kHz 6-dB点:8.7553 kHz阻带边缘:9.64 kHz通频带纹波:0.01 dB阻带Atten过渡宽度:1.64 kHz

dsp。LowpassFilterを使用した最小次数設計

dsp。LowpassFilterを使用して最小次数フィルターを設計し,测量を使用して設計が指定の仕様を満たすことを確認できます。フィルターの次数はここでも100です。

LP_FIR_minOrd = dsp。LowpassFilter (“SampleRate”Fs,...“DesignForMinimumOrder”,真的,“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,“PassbandRipple”据美联社,,“StopbandAttenuation”, Ast);Nlp = order(LP_FIR_minOrd)
ans =采样率:48 kHz通频带边缘:8 kHz 3-dB点:8.7136 kHz 6-dB点:8.922 kHz阻带边缘:10 kHz通频带纹波:0.0098641 dB阻带Atten。转换宽度:2 kHz Nlp = 100

IIRフィルターの設計

楕円フィルターは,最適な等リップル冷杉フィルターに相当するIIRのフィルターです。したがって,同じ仕様を使用して楕円フィルターを設計できます。IIRフィルターでは,取得するフィルター次数が対応する冷杉フィルターの次数よりもはるかに小さくなります。

サンプリング周波数,カットオフ周波数,通過帯域リップル制約,および阻止帯域の減衰量を120次冷杉フィルターと同じにして楕円フィルターを設計します。楕円フィルターのフィルター次数を10に減らします。

N = 10;LP_IIR = dsp。LowpassFilter(“SampleRate”Fs,“FilterType”“信息检索”...“DesignForMinimumOrder”假的,“FilterOrder”N...“PassbandFrequency”《外交政策》,“PassbandRipple”据美联社,,“StopbandAttenuation”, Ast);

FIRとIIRの設計を比較します。2つの実装のコストを計算します。

hfvt = fvtool (LP_FIR LP_IIR,“Fs”Fs);传奇(hfvt'FIR Equiripple, N = 120''IIR Elliptic, N = 10');cost(LP_FIR) = cost(LP_IIR)
cost_FIR = struct with fields: NumCoefficients: 121 NumStates: 120 MultiplicationsPerInputSample: 121 AdditionsPerInputSample: 120 cost_IIR = struct with fields: NumCoefficients: 25 NumStates: 20 MultiplicationsPerInputSample: 25 AdditionsPerInputSample: 20

振幅応答は冷杉フィルターとIIRフィルターで同様です。コストはIIRフィルターが冷杉フィルターの約1/6になります。

IIRフィルターの実行

IIRフィルターは双二次フィルターとして設計されています。フィルターをデータに適用するには,FIR の場合と同じコマンドを使用します。

10次IIRローパスフィルターを使用して,ゼロ平均と単位標準偏差をもつ10秒間のガウスノイズを256サンプルのフレームでフィルター処理します。スペクトルアナライザーで結果を表示します。

SA = dsp。简介(“SampleRate”Fs,“SpectralAverages”5);抽搐Toc < 10 x = randn(256,1);y = LP_IIR (x);SA (y);结束

可変帯域幅の冷杉フィルターとIIRフィルター

実行時にカットオフ周波数が変更可能なフィルターを設計することもできます。その場合はdsp。VariableBandwidthFIRFilterdsp。VariableBandwidthIIRFilterを使用します。

関連するトピック