• 大小: 133KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-08-08
  • 语言: Matlab
  • 标签: 均值去噪  

资源简介

本资源内包含一个纯净的音乐信号、一个掺杂余弦噪声与白噪声的音乐信号,以及matlab源代码进行傅里叶频域分析;针对余弦噪声设计巴特沃斯带通滤波器(butterworth bandpass filter),针对白噪声,用均值去噪的方法,最后程序输出一个去除各种噪声后纯净的音乐信号。(关键语句都附有注释)

资源截图

代码片段和文件信息

clear all;close all;clc
%断点位置:14、22、41、61行
%读入无噪声音乐文件y;采样频率为fs
[yfs]=audioread(‘Clean.wav‘);
x=y(:1)‘;
% sound(xfs);%播放音乐文件
N=length(x);%音乐文件的采样点数总和(采样长度)
fft_x=fft(xN);%音乐信号的傅里叶变换
w=fs/N*(0:N-1);%频谱空间的谱线间隔矩阵,即采样频率间隔,fs为歌曲的采样频率,它最高
figure(1)subplot(211);plot(x)title(‘Clean Music Signal‘);
subplot(212)plot(wabs(fft_x))title(‘Frequency domain of Clean Music Signal ‘);%可以看出,音乐文件最高频率是大概8000Hz

%读入有噪声音乐文件
[ynfs]=audioread(‘Corrupt.wav‘);
xn=yn(:1)‘;
fft_xn=fft(xnN);%音乐信号的傅里叶变换
 sound(xnfs);
figure(2)subplot(211);plot(xn)title(‘Noise Music Signal‘);
subplot(212)plot(wabs(fft_xn))title(‘Frequency domain of Noise Music Signal‘);%对比figure(1)中的波形可以看出在750和1750Hz处各存在一个噪声,因此需要设计带阻滤波器

%% band-pass filter
a=0.16;
b=0.22;
wp=[a-0.05b+0.05];
ws=[ab];
Rp=3;
As=13;
[Nbwc]=buttord(wpwsRpAs);
[BSbASb]=butter(Nbwc‘stop‘);
fk=0:1/8000:1;
Hk=freqz(BSbASbfk*pi);
figure(3)
plot(fk20*log(abs(Hk)));
%对噪声信号滤波
F_y1=filter(BSbASbxn);
fft_F_y1=fft(F_y1N);%滤波后音乐信号傅里叶变换
 sound(F_y1fs);
figure(4)subplot(211)plot(F_y1)title(‘1st Music signal after filtering‘)
subplot(212)plot(wabs(fft_F_y1))title(‘Frequency domain of Music signal after 1st filtering‘);

c=0.4;
d=0.46;
wp=[c-0.05d+0.05];
ws=[cd];
Rp=3;
As=13;
[Nbwc]=buttord(wpwsRpAs);
[BSbASb]=butter(Nbwc‘stop‘);
fk=0:1/8000:1;
Hk=freqz(BSbASbfk*pi);
figure(5)
plot(fk20*log(abs(Hk)));
%对噪声信号滤波
F_y2=filter(BSbASbF_y1);
fft_F_y2=fft(F_y2N);%滤波后音乐信号傅里叶变换
sound(F_y2fs);
figure(6)subplot(211)plot(F_y2)title(‘2nd Music signal after filtering‘)
subplot(212)plot(wabs(fft_F_y2))title(‘Frequency domain of Music signal after 2nd filtering‘);

%求平均值方法滤除白噪声
music=audioread(‘Clean.wav‘);
music=music(:1)‘;
sum=F_y2;
for ii=1:1999
    r=rand(1N);
    x2=r-0.5;
    yn=music+x2;
    sum=sum+yn;
end
sum=sum/2000;
sound(sumfs);
fft_sum=fft(sumN);
figure(7)subplot(211)plot(sum)title(‘Music signal after averaging‘);
subplot(212)plot(wabs(fft_sum))title(‘Frequency domain of Music signal after averaging‘);


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2304  2018-11-20 22:33  BS.m

     文件      50044  2018-11-15 13:05  Clean.wav

     文件     100044  2018-11-15 13:05  Corrupt.wav

----------- ---------  ---------- -----  ----

               152392                    3


评论

共有 条评论