数字信号处理课程设计报告
3.1 显示幅度谱函数IIR_DispMag()
function IIR_DispMag() %显示幅度谱函数IIR_DispMag
[num den CYPL YYYFlag]=IIR_Createfilter; %参数调用以设计好的滤波器参数 if(~YYYFlag) return; end
figure(1);
[h f]=freqz(num,den,512,CYPL); % 转换成数字滤波器 plot(f,abs(h)); %回执幅频曲线 grid on; zoom on;
3.2 创建滤波器IIR_Createfilter()
3.2.1 巴特沃斯低通滤波器设计 Wp=2*pi*f2/f1;
Ws=2*pi*f3/f1;
OmigaP=Wp*f1; 脉冲相应不变法的数字指标与模拟指标频率转换 OmigaS=Ws*f1;
[n W]=buttord(OmigaP,OmigaS,Rp,Rs,'s');%调用巴特沃斯滤波器函数 [B A]=butter(n,W,'s');%默认为低通滤波器 [num,den]=impinvar(B,A,f1);
3.2.2 巴特沃斯高通滤波器设计 Wp=2*pi*f2/f1;
Ws=2*pi*f3/f1; OmigaP=Wp*f1; OmigaS=Ws*f1;
[n W]=buttord(OmigaP,OmigaS,Rp,Rs,'s');
[B A]=butter(n,W,'high','s'); %高通滤波器设计 [num,den]=impinvar(B,A,f1);
3.2.3 切比雪夫I型低通滤波器设计
Wp=2*pi*f2/f1;
Ws=2*pi*f3/f1;
wp1=Wp*f1; %频率转换 ws1=Ws*f1;
[n W]=cheb1ord(wp1,ws1,Rp,Rs,'s'); % 切比雪夫I型函数调用 [B A]=cheby1(n,1,W,'low','s'); [num,den]=bilinear(B,A,f1);
3.2.4 切比雪夫I型高通滤波器设计 Wp=2*pi*f2/f1;
Ws=2*pi*f3/f1;
wp1=Wp*f1; %频率转换
7
数字信号处理课程设计报告
ws1=Ws*f1;
[n W]=cheb1ord(wp1,ws1,Rp,Rs,'s'); % 切比雪夫I型函数调用 [B A]=cheby1(n,1,W,'high','s'); [num,den]=bilinear(B,A,f1);
3.3 显示相位谱函数IIR_DispAngle()
function IIR_DispAngle()
[num den CYPL YYYFlag]=IIR_Createfilter; if(~YYYFlag) return; end
figure(2);
[h f]=freqz(num,den,512,CYPL); plot(f,(angle(h))); grid on; zoom on;
3.4 显示零极点图函数IIR_DispZplane()
function IIR_DispZplane()
[num den CYPL YYYFlag]=IIR_Createfilter; if(~YYYFlag) return; end
figure(3);
zplane(num,den); % Z域变换 axis([-5,5,-2,2]);
3.5 选择波形文件IIR_GetWAVFile()
function sig=IIR_GetWAVFile()
[name,path]=uigetfile('*.wav','请选择一个.wav波形文件');%选取文件的函数调用 file_path=[path,name];
if(~(isstr(name))|~(isstr(path))) sig=[]; return; end
[data freq bits]=wavread(file_path); time=length(data)/freq;
%info=['源信号-'name ';'str2num(time) '秒;fs='str2num(freq) 'Hz']; s=[];
s.data=data; s.freq=freq; s.bits=bits; %s.info=info; s.time=time;
8
数字信号处理课程设计报告
data_hndl=findobj(gcbf,'Tag','Button_WAV'); set(data_hndl,'Userdata',s);
3.6 播放原始文件IIR_Playorg
function IIR_Playorg()
data_hndl=findobj(gcbf,'Tag','Button_WAV'); sig_info=get(data_hndl,'Userdata'); data=sig_info.data; fs=sig_info.freq; sound(data,fs);
3.7 播放时滤波后文件IIR_Playmod
function IIR_Playmod
data_hndl=findobj(gcbf,'Tag','Button_WAV'); sig_info=get(data_hndl,'Userdata'); data=sig_info.data; fs=sig_info.freq;
[B A suc1 suc2]=IIR_Createfilter; if(~suc2) return; end
out=filter(B,A,data); %音频文件通过选择的滤波器 sound(out,fs);
4 代码的运行与调试
本次试验的大部分代码是书上给出的,但是有点小问题,就是在自编函数哪有错误,原句是:if(strcmp(fil_name,’错误代码’)),修改过后的if(strcmp(fil_name,’巴特沃斯’)),这样程序就可以运行了。再有就是要录一段自己的音频文件,并且格式是WMA的,最好是有高音和低音区别的,因为这样我们就可以更清楚的辨别滤波器的滤音效果。
5 软件运行与测试
在巴特沃斯低通滤波器环境情况下,设置通带截止频率与阻带截止频率分别为100,500;得到的幅度、相位,零极点图如图示:
9
数字信号处理课程设计报告
幅度响应(a) 相位响应(b) 图5.1 低通的幅度、相位,零极点图
零极点(c) 在巴特沃斯高通滤波器环境情况下,设置通带截止频率与阻带截止频率分别为500,100;得到的幅度、相位,零极点图如图示:
幅度响应(a) 相位响应(b) 图5.2 高通的幅度、相位,零极点图
零极点(c) 在切比沃雪夫I高通滤波器环境下,设置通带截止频率与阻带截止频率分别为200,100;得到幅度、相位,零极点图如图5.3所示。
幅度(a) 相位(b) 图5.3 幅度、相位,零极点图
零极点(c) 在切比沃雪夫I低通滤波器环境下,设置通带截止频率与阻带截止频率分别为200,100;得到幅度、相位,零极点图如图5.4所示。
10
数字信号处理课程设计报告
幅度(a) 相位(b) 图5.4 幅度、相位,零极点图
零极点(c) 点击选择音频文件按钮,会出现选择文件的信息框,如图5.4。
图5.4 读取音频文件
选择音频文件李栋.wav,先播放原音频文件,然后播放滤波后的音频文件,二者一对比明显可以听出滤波后音频文件的效果了,高音部分是被滤除的,只保留了满足低通条件的那部分音频,听起来声音低沉,还有点延时。
11
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高中教育数字信号处理课程设计(1)MATLAB实现 (3)全文阅读和word下载服务。
相关推荐: