本报告探讨了使用MATLAB进行无限冲激响应(IIR)数字滤波器的设计方法。通过理论分析与实验验证相结合的方式,详细介绍了滤波器的设计流程、参数选择及优化技巧,并提供了实际应用案例,为工程实践提供参考。
声音信号的采集、加噪及滤波过程如下:
读取信号并获取采样率与位数: `[y, Fs, bits] = wavread(D:\q.wav);`
选取单声道进行分析: `y=y(:,1);`
计算语音信号长度: `yl=length(y)`
对信号进行傅里叶变换: `yy=fft(y, yl);`
生成噪声:
`t=[0:1/8000:4 zeros(1,yl-32001)];`
`m=0.07*sin(10000*pi*t);`
将噪声加入原始信号中: `n=y+m;`
计算含噪语音的长度: `nl=length(n)`
对加噪后的信号进行傅里叶变换: `nn=fft(n, nl);`
绘制图形:
`figure(1); subplot(2,1,1); plot(n); title(噪声信号波形)`
`subplot(2,1,2); plot(y); title(原信号波形)`
频谱图显示:
`figure(2); subplot(2,1,1); plot(abs(nn));title(噪声信号频谱);`
`subplot(2,1,2); plot(abs(yy));title(原信号频谱);`
播放加噪后的音频: `sound(n,Fs)`