伊莉討論區

標題: 請問MATLAB 帶通濾波器 [打印本頁]

作者: wwrr1234    時間: 2015-6-9 01:07 PM     標題: 請問MATLAB 帶通濾波器

題目是利用Parks-McClellan演算法設計帶通濾波器
參數 通帶[0.35PI,0.65PI] 通帶連波Rp=0.1dB 阻帶[0,0.2PI]和[0.8PI,PI] 阻帶衰減As=60dB
以下是我打的 請幫我看看 謝謝!!
w1p=0.35*pi;
w2p=0.65*pi;
w1s=0,0.2*pi;
w2s=0.8*pi,pi;
Rp=0.1;
As=60;
delta_w=2*pi/1000;
w1pi=w1p/delta_w+1;
w1si=w1s/delta_w+1;
w2pi=w2p/delta_w+1;
w2si=w2s/delta_w+1;
deltal=(1-10^(-Rp/20))/(1+10^(-Rp/20));
delta2=(1+deltal)*(10^(-As/20));
weights=[delta2/deltal, 1];
df=(w2s-w1p)/(2*pi);
tr_width=(w1p-w1s)/(2*pi);
M=ceil((As-7.95)/(14.36*tr_width))+1
f=[0, w1p/pi, w2s/pi 1];
m=[1 1 0 0];
h=remez(M-1,f,m,weights);
[db,mag,pha,grd,w]=freqz_m(h,[1],1000);
Asd=-max(db(1:w1si))
Rpd=max(abs(db(w1pi:w2pi)))
[H, w, P, L]=Amp_Res(h);
subplot(2,2,1);
stem(h);
axis([0, M, -0.4, 0.5])
subplot(2,2,2);
plot(w/pi,db);
axis([0,1,-90,10]);
subplot(2,2,3);
plot(w/pi,mag);
axis([0,1,-0.1,1.1]);
subplot(2,2,4);
plot(w(1:w1si)/pi,H(1:w1si));
hold on;
plot(w(w1pi:w1si)/pi,H(w1pi:w2pi)-1);
plot(w(w2si:end)/pi,H(w2si:end));
hold off;
axis([0,1,-0.005,0.005]);


作者: rayford    時間: 2015-6-18 05:37 PM



直接找算法包啦,哈哈,matlab哪里用得上那麼多源碼了
作者: TT8787785    時間: 2022-12-18 11:46 PM

這 code 裡面的 freqz_m 不是預設的matlab function

好像 matlab 在至少 2021b 版本後,有個直接for 'Parks–McClellan algorithm' 的功能

firgr
'Parks-McClellan FIR filter'


作者: TT8787785    時間: 2022-12-18 11:58 PM

TT8787785 發表於 2022-12-18 11:46 PM
這 code 裡面的 freqz_m 不是預設的matlab function

好像 matlab 在至少 2021b 版本後,有個直接for 'Park ...

哦。。。

資訊有誤,在 Matlab 2011a 就有導入 firgr 的功能
如果考試目的是自己寫一個,那可能需要一些數學來源的資訊幫助思考。

作者: kkaguo    時間: 2023-1-13 11:53 AM

thank you very!!!!

so nice!!!!




歡迎光臨 伊莉討論區 (https://attach1201.eyny.com/) Powered by Discuz!