LoginSignup
1
1

Matlabでフィルタの通過特性を計算する

Last updated at Posted at 2023-10-08

Caution

この方法は¹次系のフィルタでは一致しましたが、2次系では会いませんでした。
間違った方法なので使わないでください。

目的

フィルタの通貨特性は理論式で追うのが理想だけど、Matlab上でRC回路ポチポチつないで計算できる方法も知りたく、調査した。その結果を忘備録として記します。

対象

今回は理論式もわかっている 一次のRCフィルタを対象とする。
理論式は(https://analogista.jp/transfer-function1/) を参考としました。

下図も上記サイトの引用です。
image.png

上記の回路で R=1Ω, C =0.001F とすると カットオフ周波数$f_c$は下式になります。

$f_c = \frac{1}{2\pi RC}=159.2 (Hz) $

このフィルタは1次のLowPassFilterなので、この159Hzで-3dB下がって、位相が45度回転する伝達特性が得られれば、やりたいことができている状態になります。

作成モデルの考え方

Vinは①の経路のインピーダンスZinで決まり、 Voutは②の経路のインピーダンスZoutで決まります。
なのでMatlab上でZinとZoutのインピーダンスを算出し、Zout/Zinを算出すれば Vout/Vin すなわち通過特性が求まると考えます。(この考え方あってますかね?ちゃんと理論武装できず、保証できませんが・・・)

image.png

実行コードとソフト

%入力側インピーダンスZinと 出力側インピーダンスZoutを計算し
% Zout / Zin を伝達特性とする。

%% 理論式
R = 1;
C = 1e-3;
sys = tf([1],[R*C, 1]);

[mag,phase,wout] = bode(sys,Freq*2*pi); %入力はradian
mag = squeeze(mag);
phase = squeeze(phase);

Cutoff_Freq  = 1/(2*pi*R*C); %159Hz 

%% Matlabモデルからインピーダンス読み込み
Z_data = power_zmeter('NoiseFilter',logspace(0,5,10000)); %1Hz ー 10^5 Hzまで

%Zin 
Freq  = Z_data.Freq;
Gain_in = abs( Z_data.Z(:,1) );
Phase_in = angle( Z_data.Z(:,1) )/pi*180;

%Zout
Gain_out = abs( Z_data.Z(:,2) );
Phase_out = angle( Z_data.Z(:,2) )/pi*180;

%% 描画して比較
close all
figure()
subplot 211
semilogx(Freq,20*log10([Gain_out./Gain_in]),wout/2/pi, 20*log10(mag), ...
    [Cutoff_Freq Cutoff_Freq],[0 -60],... %カットオフ周波数
    [10 10000],[-3 -3]... % -3dBライン
    );

subplot 212
semilogx(Freq,Phase_out - Phase_in,wout/2/pi,phase,...
    [Cutoff_Freq Cutoff_Freq],[0 -90],... %カットオフ周波数
    [10 10000],[-45 -45]) % -3dBライン)
ylim([-90 90])

Simlinkでは、インピーダンスを計算するブロックがあり、それを入出力部につけることでZout,Zinを計算します。作成したSimulinkファイルの絵は以下です。

image.png

実行結果

上がゲイン特性 下が位相特性で、横軸は周波数(Hz) 縦軸はパワー(dB)と 位相(deg)です。
理論式とSimより算出した式が一致しているため、青いラインにオレンジ色が完全に一致しています。

また想定通り159Hz(黄色の縦ライン)の位置で -3dB, 45degの位相遅れ(紫色の横線)が発生しています。想定通りのようです。

image.png

おわりに

ここでは簡単な1次のフィルタについて考えましたが、回路が複雑になってくるとこの方式が
力を発揮すると思われます。誰かの役に立てば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1