1

私は信号処理の初心者で、私のプロジェクトの 1 つは C++ フィルター クラスを実装することです。Chebyshev タイプ I および II、Butterworth、Elliptic などの一般的なフィルターの高次係数が必要ですが、残念ながら、ネット内のほとんどの係数テーブルには最大 10 次までしかリストされていません。MATLAB を使用してこれらのフィルターを生成し、それらの高次係数を取得することにしましたが、混乱しているのは、1 セットの係数しか与えないことです。これは、(ao、a1、a2 ……アン)。

IIR フィルターには 2 セットの係数があり、通常は a0,a1...an と b0,b1,...,bn で表されることを知りました。これらの係数を生成して Excel ファイルにエクスポートする MATLAB コードを次に示します。

 %Chebyshev Filter Coefficients

 filename = 'cheby2coefs.xlsx';
 for Order = 1:64 
 fprintf('This is');
 disp(Order);
 fprintf('coefficients');
 [i,j] = cheby2(Order, 20, 300/500);
 disp([i,j]);
 fprintf('\n');

  xlswrite(filename,[i,j]',Order);
end

これまでのところ、MATLAB を使用してこれらの係数を計算する方法に関する情報源がネット上にほとんどないため、苦労しています。私の質問は、これらのフィルターの IIR 係数を正確にどのように生成するのかということです (それらが IIR であると仮定して)。

4

2 に答える 2

2

順調に進んでいるようです。への呼び出しにパラメーター(阻止帯域周波数)cheby2がありません。このコマンドに関するMATLABの公式ドキュメントWstを読み、呼び出しを確認する必要があります。

iまた、出力変数に名前を付けないでくださいj。これは悪い習慣です。iおよびjsqrt(-1)虚数の予約名です。出力変数bに名前を付け、a少なくとも名前を付けます。

チェビシェフを使い終わったら、バターワースフィルターと楕円フィルターにそれぞれとをbutter使用します。ellip

于 2013-01-16T11:35:00.450 に答える
0

これはMATLABのドキュメントでカバーされているようです:

[b、a] = cheby2(n、R、Wst)は、正規化された阻止帯域エッジ周波数Wstと阻止帯域リップルRdBをピーク通過帯域値から下げた次数nのローパスデジタルチェビシェフタイプIIフィルターを設計します。これは、長さn + 1の行ベクトルbおよびaのフィルター係数を返し、係数はzの降べき乗になります。

于 2013-01-16T11:35:24.723 に答える