武汉理工大学《专业课程设计》说明书
mag=[0 1]; dev=[p s];
[n23,wn23,beta,ftype]=kaiserord(fpts,mag,dev);
b23=fir1(n23,wn23,'high',Kaiser(n23+1,beta)); %由fir1 设计滤波器 [h,w]=freqz(b23,1); %得到频率响应
axes(handles.axes7);plot(w*12000*0.5/pi,abs(h)); end
if get(handles.radiobutton1,'value') [y,fs,nbits]=wavread ('555'); n = length (y) ; %求出语音信号的长度 noise=0.07*randn(n,2); %随机函数产生噪声 s=y+noise; %语音信号加入噪声 S=fft(s); %傅里叶变换 z13=filter(num13,den13,s); if get(handles.checkbox1,'Value') else
sound(z13); end
m13=fft(z13); %求滤波后的信号 axes(handles.axes6);plot(abs(m13),'r'); axes(handles.axes5);plot(z13); end
if get(handles.radiobutton2,'value') [y,fs,nbits]=wavread ('555'); n = length (y) ; %求出语音信号的长度 noise=0.01*randn(n,2); %随机函数产生噪声 s=y+noise; %语音信号加入噪声 S=fft(s); %傅里叶变换 z23=fftfilt(b23,s);
16
武汉理工大学《专业课程设计》说明书
if get(handles.checkbox1,'Value') else
sound(z23); end
m23=fft(z23); %求滤波后的信号 axes(handles.axes6);plot(abs(m23),'r'); axes(handles.axes5);plot(z23); end
% --- Executes on button press in pushbutton5.带通滤波器设计 function pushbutton5_Callback(hObject, eventdata, handles) if get(handles.radiobutton1,'value') Fp1=1200; Fp2=3000; Fs1=1000; Fs2=3200; Ft=8000;
wp1=tan(pi*Fp1/Ft); %带通到低通滤波器的转换 wp2=tan(pi*Fp2/Ft); ws1=tan(pi*Fs1/Ft); ws2=tan(pi*Fs2/Ft); w=wp1*wp2/ws2; bw=wp2-wp1; wp=1;
ws=(wp1*wp2-w.^2)/(bw*w);
[n12,wn12]=buttord(wp,ws,1,50,'s'); %求低通滤波器阶数和截止频率 [b12,a12]=butter(n12,wn12,'s'); %求S 域的频率响应参数
[num2,den2]=lp2bp(b12,a12,sqrt(wp1*wp2),bw);%S 域低通参数转带通
[num12,den12]=bilinear(num2,den2,0.5);%双线性变换频率响应S[h,w]=freqz(num12,den12);%根据参数求出频率响应
17
到Z域
武汉理工大学《专业课程设计》说明书
axes(handles.axes7);plot(w*8000*0.5/pi,abs(h)); end
if get(handles.radiobutton2,'value') Fp1=1200; Fp2=3000; Fs1=1000; Fs2=3200; Ft=8000;
wp1=tan(pi*Fp1/Ft); %带通到低通滤波器参数转换 wp2=tan(pi*Fp2/Ft); ws1=tan(pi*Fs1/Ft); ws2=tan(pi*Fs2/Ft); w=wp1*wp2/ws2; bw=wp2-wp1; wp=1;
ws=(wp*wp2-w.^2)/(bw*w);
[n22,wn22]=buttord(wp,ws,1,50,'s'); %求低通滤波器阶数和截止频率 [b22,a22]=butter(n22,wn22,'s'); %求S 域的频率响应的参数
[num2,den2]=lp2bp(b22,a22,sqrt(wp1*wp2),bw); %S 域低通参数转带通
[num22,den22]=bilinear(num2,den2,0.5);%双线性变换频率响应S[h,w]=freqz(num22,den22); %根据参数求出频率响应 axes(handles.axes7);plot(w*8000*0.5/pi,abs(h)); end
if get(handles.radiobutton1,'value') [y,fs,nbits]=wavread ('555'); n = length (y) ; %求出语音信号的长度 noise=0.07*randn(n,2); %随机函数产生噪声 s=y+noise; %语音信号加入噪声 S=fft(s); %傅里叶变换
18
到Z域
武汉理工大学《专业课程设计》说明书
z12=filter(num12,den12,s); if get(handles.checkbox1,'Value') else
sound(z12); end
m12=fft(z12); %求滤波后的信号 axes(handles.axes6);plot(abs(m12),'r'); axes(handles.axes5);plot(z12); end
if get(handles.radiobutton2,'value') [y,fs,nbits]=wavread ('555'); n = length (y) ; %求出语音信号的长度 noise=0.07*randn(n,2); %随机函数产生噪声 s=y+noise; %语音信号加入噪声 S=fft(s); %傅里叶变换 z23=fftfilt(b22,s);
if get(handles.checkbox1,'Value') else
sound(z23); end
m23=fft(z23); %求滤波后的信号 axes(handles.axes6);plot(abs(m23),'r'); axes(handles.axes5);plot(z23); end
% --- Executes on button press in radiobutton1.
function radiobutton1_Callback(hObject, eventdata, handles) set(handles.radiobutton1,'value',1); set(handles.radiobutton2,'value',0);
% --- Executes on button press in radiobutton2.
19
相关推荐: