资源简介
本资源内包含一个纯净的音乐信号、一个掺杂余弦噪声与白噪声的音乐信号,以及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
相关资源
- matlab带通滤波器
- MATLAB多方法去高斯白噪声.doc
- 数字图像处理DSP_IIR带通滤波器的设计
- DSP设计FIR带通滤波器报告&源代码
- 基于MATLAB语音信号去白噪声、高斯白
- 用MATLAB对高斯白噪声进行分析
- AWGN协作通信能量检测
-
白噪声simuli
nk模型 - 积分白噪声MATLAB
- 高斯白噪声矩阵
- 基于频率采样法FIR带通滤波器设计
- 白噪声及有色噪声序列的产生
- QPSK信号+白噪声程序MATLAB
- 带高斯白噪声的Kalman滤波Matlab代码带
- QPSK高斯白噪声信道和瑞利信道的误码
- 带通滤波器 Multisim仿真程序
- 带通滤波器MATLAB程序139688
- 对伪随机信号,白噪声信号,正弦信
- bpsk在高斯白噪声信道中调制解调MAT
- 带通滤波器matlab程序
- 非局部均值去噪matlab源码
- Matlab实现带通滤波器的程序
- FIR带通滤波器源代码
- 产生正弦波、均匀白噪声、高斯白噪
- 快速可靠的噪声估计程序(matlab程序
- 构造均值为a方差为b的高斯白噪声
- 画正弦信号的时域波形和频谱,以及
- FIR带通滤波器的matlab仿真
- 用matlab实现均值滤波去除高斯白噪声
- 压控电压源二阶有源带通滤波器 40K
评论
共有 条评论