メインコンテンツ

freqs

アナログ フィルターの周波数応答

説明

h = freqs(b,a,w) は、角周波数 w で評価された、係数ベクトル b および a により指定されたアナログ フィルターの複素周波数応答を返します。

[h,wout] = freqs(b,a,n) は、n 個の周波数点を使用して h を計算し、対応する角周波数を wout に返します。

出力引数のない freqs(___) は、振幅応答と位相応答を角周波数として現在の Figure ウィンドウにプロットします。前の入力構文のいずれでもこの構文を使用できます。

すべて折りたたむ

伝達関数の周波数応答を求め、それをグラフ表示します。

H(s)=0.2s2+0.3s+1s2+0.4s+1.

a = [1 0.4 1];
b = [0.2 0.3 1];
w = logspace(-1,1);

h = freqs(b,a,w);
mag = abs(h);
phase = angle(h);
phasedeg = phase*180/pi;

subplot(2,1,1)
loglog(w,mag)
grid on
xlabel('Frequency (rad/s)')
ylabel('Magnitude')

subplot(2,1,2)
semilogx(w,phasedeg)
grid on
xlabel('Frequency (rad/s)')
ylabel('Phase (degrees)')

Figure contains 2 axes objects. Axes object 1 with xlabel Frequency (rad/s), ylabel Magnitude contains an object of type line. Axes object 2 with xlabel Frequency (rad/s), ylabel Phase (degrees) contains an object of type line.

出力引数なしで freqs を呼び出してプロットを生成することもできます。

figure
freqs(b,a,w)

Figure contains 2 axes objects. Axes object 1 with xlabel Frequency (rad/s), ylabel Phase (degrees) contains an object of type line. Axes object 2 with xlabel Frequency (rad/s), ylabel Magnitude contains an object of type line.

カットオフ周波数が 2 GHz である 5 次のアナログ バタワース ローパス フィルターを設計します。2π 倍にして周波数を秒あたりのラジアン単位に変換します。4096 点でのフィルターの周波数応答を計算します。

n = 5;
wc = 2*pi*2e9;
w = 2*pi*1e9*logspace(-2,1,4096)';

[zb,pb,kb] = butter(n,wc,"s");
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,w);
gdb = -diff(unwrap(angle(hb)))./diff(wb);

エッジ周波数が同じで、通過帯域リップルが 3 dB である 5 次のチェビシェフ I 型フィルターを設計します。その周波数応答を計算します。

[z1,p1,k1] = cheby1(n,3,wc,"s");
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,w);
gd1 = -diff(unwrap(angle(h1)))./diff(w1);

エッジ周波数が同じで、阻止帯域の減衰量が 30 dB である 5 次のチェビシェフ II 型フィルターを設計します。その周波数応答を計算します。

[z2,p2,k2] = cheby2(n,30,wc,"s");
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,w);
gd2 = -diff(unwrap(angle(h2)))./diff(w2);

エッジ周波数が同じで、通過帯域リップルが 3 dB、阻止帯域の減衰量が 30 dB である 5 次の楕円フィルターを設計します。その周波数応答を計算します。

[ze,pe,ke] = ellip(n,3,30,wc,"s");
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,w);
gde = -diff(unwrap(angle(he)))./diff(we);

エッジ周波数が同じである 5 次のベッセル フィルターを設計します。その周波数応答を計算します。

[zf,pf,kf] = besself(n,wc);
[bf,af] = zp2tf(zf,pf,kf);
[hf,wf] = freqs(bf,af,w);
gdf = -diff(unwrap(angle(hf)))./diff(wf);

減衰をデシベルでプロットします。周波数をギガヘルツで表します。フィルターを比較します。

fGHz = [wb w1 w2 we wf]/(2e9*pi);
plot(fGHz,mag2db(abs([hb h1 h2 he hf])))
axis([0 5 -45 5])
grid on
xlabel("Frequency (GHz)")
ylabel("Attenuation (dB)")
legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Attenuation (dB) contains 5 objects of type line. These objects represent butter, cheby1, cheby2, ellip, besself.

サンプル単位で群遅延をプロットします。周波数をギガヘルツで、群遅延をナノ秒で表します。フィルターを比較します。

gdns = [gdb gd1 gd2 gde gdf]*1e9;
gdns(gdns<0) = NaN;
loglog(fGHz(2:end,:),gdns)
grid on
xlabel("Frequency (GHz)")
ylabel("Group delay (ns)")
legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Group delay (ns) contains 5 objects of type line. These objects represent butter, cheby1, cheby2, ellip, besself.

バタワース フィルターおよびチェビシェフ II 型フィルターには平坦な通過帯域と広い遷移帯域幅があります。チェビシェフ I 型フィルターおよび楕円フィルターは速くロールオフしますが、通過帯域リップルがあります。チェビシェフ II 型設計関数に対する周波数入力は、通過帯域の末尾ではなく阻止帯域の始点を設定します。ベッセル フィルターは、通過帯域に沿って定数近似群遅延をもちます。

最大 104 ラジアン/サンプルの定数近似群遅延をもつ 5 次のアナログ ローパス ベッセル フィルターを設計します。freqs を使用してフィルターの周波数応答をプロットします。

[b,a] = besself(5,10000);   % Bessel analog filter design
freqs(b,a)                  % Plot frequency response

Figure contains 2 axes objects. Axes object 1 with xlabel Frequency (rad/s), ylabel Phase (degrees) contains an object of type line. Axes object 2 with xlabel Frequency (rad/s), ylabel Magnitude contains an object of type line.

入力引数

すべて折りたたむ

伝達関数の係数。ベクトルとして指定します。b には分子係数を格納し、a には分母係数を格納します。

例: [b,a] = butter(5,50,'s') は、50 ラジアン/秒のカットオフ周波数を持つ 5 次のバタワース フィルターを指定します。

データ型: single | double

角周波数。正の実数ベクトルとしてラジアン/秒単位で指定します。

例: 2*pi*logspace(6,9) は、1 MHz (2π × 106 ラジアン/秒) および 1 GHz (2π × 109 ラジアン/秒) の 50 の対数的に等間隔の角周波数を指定します。

データ型: single | double

評価点の数。正の整数スカラーとして指定します。

データ型: single | double

出力引数

すべて折りたたむ

ベクトルとして返される周波数応答。

h が計算される角周波数。ベクトルとして返されます。

アルゴリズム

freqs は、b および a により指定されたアナログ フィルターの複素周波数応答を返します。この関数は、ラプラス変換多項式の比

H(s)=B(s)A(s)=b(1)sn+b(2)sn1++b(n+1)a(1)sm+a(2)sm1++a(m+1)

を、周波数点 s = で虚軸に沿って評価します。

s = 1j*w;
h = polyval(b,s)./polyval(a,s);

バージョン履歴

R2006a より前に導入