資源簡介
基于matlab語音信號的頻譜分析,利用添加不同噪聲經過濾波再還原出來。
代碼片段和文件信息
clear
[yfs]=audioread(‘fade.wav‘);%讀取音樂信號
y1=y(:1);%取單列????????????????????????????
N=length(y1);%求信號長度?
Y=fft(y1N);%傅里葉變換
Y1=fftshift(abs(Y));
t=(0:(N-1))/fs;%時間
f=0:fs/N:fs*(N-1)/N;%頻率
f1=f-fs/2;
%w=2*f1/fs;%歸一化
%原信號時域波形和頻譜圖
figure(1);
subplot(211);
plot(ty1);
xlabel(‘時間‘);
ylabel(‘幅度‘);
title(‘原信號時域波形‘);
subplot(212);
plot(f1abs(Y1));
%axis([-2500?2500?0?2000]);
%axis([-2000?2000?0?400]);
xlabel(‘頻率‘);
ylabel(‘幅度‘);
title(‘原信號頻譜圖‘);
%加三余弦混合噪聲
A0=0.05;%噪聲幅度
d1=A0*cos(2*pi*5000*t);%5kHz的余弦噪音
d2=A0*cos(2*pi*8000*t);%8kHz的余弦噪音
d3=A0*cos(2*pi*10000*t);%10kHz的余弦噪音
x1=d1+d2+d3;%噪聲疊加
X1=fft(x1);%噪聲傅里葉變換
y2=y1+(x1)‘;%加三余弦混合噪聲后信號
Y2=fft(y2);%加噪信號傅里葉變換
Y3=fftshift(abs(Y2));
figure(2);
subplot(311);
%axis([-10000?10000?0?400]);
plot(f1abs(X1));
xlabel(‘頻率‘);
ylabel(‘幅度‘);
title(‘三余弦噪聲頻譜‘);
subplot(312);
plot(ty2);
xlabel(‘時間t‘);
ylabel(‘幅度‘);
title(‘加三余弦噪聲信號時域波形‘);
subplot(313);
plot(f1abs(Y3));
axis([-10000?10000?0?400]);
xlabel(‘頻率‘);
ylabel(‘幅度‘);
title(‘加三余弦噪聲信號頻譜圖‘);
%加隨機白噪聲
x2=0.5*randn(N1);%噪聲
X2=fft(x2);%噪聲傅里葉變換
%y3=y1+x2;%加隨機噪聲后信號???????
%Y4=fft(x2);%加噪信號傅里葉變換
%Y5=fftshift(abs(Y4));
figure(3)
plot(f1abs(X2));
xlabel(‘頻率‘);
ylabel(‘幅度‘);
title(‘隨機白噪聲頻譜圖‘);
%白噪聲通過高通濾波器
wp2=0.2;wr2=0.9;Rp2=1.5;Rr2=30;
[n2Wn2]=buttord(wp2wr2Rp2Rr2);
[B2A2]=butter(n2Wn2‘high‘);
[Hff]=freqz(B2A2fsfs);
%figure
評論
共有 條評論