首页 > 行业资讯 > 【滤波器】基于iir带阻滤波器实现信号去噪含Matlab源码

【滤波器】基于iir带阻滤波器实现信号去噪含Matlab源码

时间:2023-01-15 来源: 浏览:

【滤波器】基于iir带阻滤波器实现信号去噪含Matlab源码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #信号处理应用matlab源码 339个

1 简介

滤波降噪技术在现代产业发展中扮演着重要的地位,MATLAB软件则为数字滤波器的设计提供便捷的平台.为了滤除语音信号中夹杂的高频噪声成分,利用MATLAB仿真软件设计一个数字IIR低通滤波器.用MATLAB对加噪语音信号进行滤波,通过对比滤波前后语音信号的时域波形和频谱来检验该滤波器的滤波效果.实验结果表明,该滤波器对高频噪声信号有很好的滤波效果.

2 完整代码

%% P2_2_1 语音信号采样,画出时域和频域的图 [y,fs] = audioread(’myname.wav’);% y为采样数据;fs为采样频率 sound(y,fs); % 播放语言信号myname N = length(y); % 信号的长度 t = (0:N-1)/fs; % 时域范围 figure(1);subplot(211);plot(t,y); title(’音频时域图’);%音频信号时域图 xlabel(’Time’);ylabel(’Amplitude’); Y = fft(y,N); % FFT分析频谱 df = fs/length(Y); % 计算谱线间隔 f = 0:df:(fs/2-df); % 频谱范围,截取前半段(抽样频率高于最大频率的2倍) Yf = abs(Y); % 幅度响应 Yf = Yf(1:length(Yf)/2);% 由于幅度响应是偶函数,所以截取一半 % 画图 figure(1); subplot(212);axis([0,fs/5,0,5000]);plot(f,Yf);title(’音频频谱图’); %% P2_2_2 加入噪声之后的时域和频域图 y = y(:,1); y = y’; nt = randn(1,length(y)); % 生成高斯噪声 %设计BPF得到4KHZ到5KHZ的噪音 fp1 = 4000;fp2 = 5000; % BPF指标 WP1 = 2*pi*fp1/fs;WP2 = 2*pi*fp2/fs;% 将模拟指标转换为数字指标 wn1 = [WP1 WP2]; b = fir1(34,wn1,’bandpass’); yn = filter(b,1,nt); % 噪声的信号 s = y+yn; % 将带限噪音和原来的音频混合 %sound(s,fs); S = fft(s,N); Sf = abs(S); % 幅度 DF = fs/length(S); % 计算谱线间隔 f = 0:DF:(fs/2-DF); % 频谱范围,截取前半段(抽样频率高于最大频率的2倍) Sf = Sf(1:length(Sf)/2); % 由于幅度响应是偶函数,所以截取一半 % 画图 figure(2); subplot(211);plot(t,s); title(’加入噪声的音频时域图’); xlabel(’Time’);ylabel(’Amplitude’);grid on; subplot(212);axis([0,fs/5,0,10000]);plot(f,Sf);title(’加入噪声的音频频谱图’); xlabel(’Frequency’);ylabel(’Amplitude’);grid on; %% P2_2_3 设计滤波器,并滤波 %设计带阻滤波器滤除噪声 FP1 = 3500;FS1 = 3600;FP2 = 5600;FS2 = 5500; rp2 = 1;rs2 = 40; FP = [FP1 FP2];FS = [FS1 FS2]; wp = 2*pi*FP/fs; % 将模拟指标转换为数字指标 ws = 2*pi*FS/fs; % 用切比雪夫IIR滤波器 [n,wn] = cheb1ord(wp,ws,rp2,rs2); % 滤波器的最小阶数为n,wn为系统频带 [bz,az] = cheby1(n,rp2,wp,’stop’); yfilt = filter(bz,az,s); % 将加噪的信号通过带阻滤波器进行滤波 sound(yfilt,fs); % 播放滤波后的语音信号 Yfil = abs(fft(yfilt,N)); Yf = Yfil(1:length(Yfil)/2); % 画图 figure(3); subplot(211);plot(t,yfilt);title(’去噪时域图’); subplot(212);axis([0,fs/5,0,10000]);plot(f,Yf);title(’去噪频域图’);

3 运行结果

4 参考文献

[1]黄晓珊, 徐国保. 基于MATLAB语音降噪IIR滤波器的设计[J]. 现代计算机(专业版), 2016(22):48-52.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐