滤波器的问题,matlab编程,大家能帮助我解释下方程的意思吗

function butterworth_m(handles,filter_type)
fs=1024;
y=handles.y;
fp1=str2double(get(handles.Fp1,'string'));
fs1=str2double(get(handles.Fs1,'string'));
fp2=str2double(get(handles.Fp2,'string'));
fs2=str2double(get(handles.Fs2,'string'));
Rs=str2double(get(handles.Rs1,'string'));
Rp=str2double(get(handles.Rp1,'string'));
if Rs==0
Rs=20;
end
if Rp==0
Rp=1;
end
wp1=2*fp1/fs;
ws1=2*fs1/fs;
wp2=2*fp2/fs;
ws2=2*fs2/fs;
switch filter_type
case 1 % lowpass
[N wn]=buttord(wp1,ws1,Rp,Rs);
[b a]=butter(N,wn);
case 2 % highpass
[N wn]=buttord(wp1,ws1,Rp,Rs);
[b a]=butter(N,wn,'high');
case 3 % bandpass
[N wn]=buttord([wp1 wp2],[ws1 ws2],Rp,Rs);
[b a]=butter(N,wn);
case 4 % bandstop
[N wn]=buttord([wp1 wp2],[ws1 ws2],Rp,Rs);
[b a]=butter(N,wn,'stop');
end
[H w]=freqz(b,a,1024,'whole');
H=H(1:512)';
w=w(1:512)';
mag=abs(H);
db=20*log10(mag+eps)/max(mag);
plot(handles.axes2,w/pi,db);
xlabel(handles.axes2,'Frequency(*π rad)');
ylabel(handles.axes2,'Gain(dB)');
y1=filter(b,a,y);
t=(1:fs)/fs;
plot(handles.axes4,t(round((N-1)/2)+150:round((N-1)/2)+200),y1(round((N-1)/2)+150:round((N-1)/2)+200));
xlabel(handles.axes4,'Time');
ylabel(handles.axes4,'Amplitude');
[fftdata f]=fft_(y1,fs);

plot(handles.axes3,f,fftdata,'r');
xlabel(handles.axes3,'Frequency');
ylabel(handles.axes3,'Amplitude');
set(handles.n,'string',num2str(N));
set(handles.Rp2,'string',num2str(Rp));
set(handles.Rs2,'string',num2str(Rs));

我来逐段解释吧。
第一段是得到滤波器的各个参数性能,fp1、fp2为通带边界频率;fs1、fs2为阻带边界频率;Rs为阻带衰减,Rp为通带波纹;wp、ws是归一化频率。

第二段是根据各个参数设计不同滤波器。buttord是确定巴特沃斯滤波器所需的最小阶数N,及数字滤波器的截止频率wn;butter是根据N和wn直接设计数字滤波器;四种滤波器类型为低通、高通、带通和带阻。

第三段是根据所设计的滤波器,画出其幅频特性图。freqz函数计算数字滤波器的频率响应,并返回频率值w及其相应的频率响应H(e^jw),db是衰减的计算公式。

第四段是根据所设计的滤波器,对y信号进行滤波,得到滤波后的信号y1。

第五段是对滤波后的信号y1进行傅里叶变换,查看其频率特性。

至于这个handles.,应该是自己编的M函数吧。这里面套用挺多的追问

频率归一化是什么意思呢

追答

wp1=2*fp1/fs;

就是这句,fs是采样频率,fs/2就是Nyquist频率,见采样定理。

以fs/2为1,其他的频率按它的百分比表示,这样就将很大范围的频率化成[0,1]之间了,有利于比较各个频率的分布情况。

追问

谢谢您的解答
我只知道为了使波形不发生混叠采样频率应该至少为信号频率的两倍
但这里fs/2是什么呢,物理意义是什么呢,不是很清楚啊
db衰减是表示什么呢

追答

就是你说的这个意思啊,既然采样频率fs应大于信号频率f的两倍,那么f<fs/2咯

db就是分贝,公式就是20*lg(|H(e^j0)|/|H(e^jw)|)

我们常说的通带允许的最大衰减、阻带应达到的最小衰减,都是这个定义,以分贝(dB)为单位。

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜