matlab習題練習之Notch Filter
一、解題步驟
(一)、撰寫 Notch Filter 的 function 檔案
1.設定頻率範圍
2.計算s = jw
如題意,s = j * w。在 matlab 中,以 j 和 i 表示虛數,sqrt()為開根號的指令,因此在 matlab 中用 sqrt(-1) 表示 j。s = jw 在matlab中表示如下:
>> s = sqrt(-1) * w
3.計算 f(s)
因為 s 是向量,向量中的元素計算要使用 "點運算",因此 f(s) 在matlab中表示如下:
>> f = (s .^ 2 + w0 ^ 2) ./ (s .^ 2 + wc * s + w0 ^2)
4.計算振幅
Mag = abs(f)
mg = 20 * log10(Mag)
5.計算相位
ph = angle(f) * 180 / pi
(二)、撰寫主程式呼叫 Notch Filter 的 Function 並繪圖
w0為中心抑制頻率,值為50。
wc為頻寬,
二、範例程式
Notch Filter Function
Main程式 (test)
clear
wmin = 10;
wmax = 300;
wc = 1:5;
w0 = 50;
for i = 1:5
[m(i,:), p(i,:)] = notch(w0, wc(i), wmin, wmax);
end
subplot(2,1,1)
semilogx(wmin:0.1:wmax, m) %x軸為對數刻度,y軸為線性刻度
axis([-inf, inf, -inf, inf]) %取x, y軸的最大與最小值
xlabel('\omega (rad/sec)') %x軸的名稱
ylabel('振幅(分貝,dB)') %y軸的名稱
title('Frequence Response of Notch Filter') %圖表名稱
legend('\omega_c=1', '\omega_c=2','\omega_c=3','\omega_c=4',...
'\omega_c=5')
grid on %顯示格線
subplot(2,1,2)
semilogx(wmin:0.1:wmax, p) %x軸為對數刻度,y軸為線性刻度
axis([-inf, inf, -inf, inf]) %取x, y軸的最大與最小值
xlabel('\omega (rad/sec)') %x軸的名稱
ylabel('相位(角度,^{o})') %上標顯示,使用^
legend('\omega_c=1', '\omega_c=2','\omega_c=3','\omega_c=4',...
'\omega_c=5') %下標顯示,使用_。
grid on %顯示格線
---
參考資料:
#notch_filter
0 留言