信号分析处理大作业报告+程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.设计方案如下

①利用MATLAB中的wavread命令来读入语音信号,将它赋值给某一向量。再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波。对于波形图与频谱图(包括滤波前后的对比图)都可以用MATLAB画出。

②由于音频信号是连续且长度未知,故可以采用N阶低通滤波器。滤掉低频部分的噪音,剩下的就是原信号了。

③将去噪后的信号写成wav格式的文件可以使用wavwrite函数。

2. 步骤

①录制一段歌曲,采用Matlab工具对此音频信号用FFT作谱分析。

②录制一段音频信号并命名为信xinhao1.wav存放在文件夹中。

③使用wavread函数读出此信号。

④用函数FFT进行傅里叶变换,得到波形图,幅值图,频谱图。

⑤加入一个随机高斯噪声,将原始信号与噪声叠加产生加噪之后的声音文件,得到xinhao2.wav文件。

⑥通过N阶低通滤波器对噪声语音滤波,在Matlab中,FIR 滤波器利用函数filter对信号进行滤波,得到xinhao3.wav文件。

首先通过MATLAB工具编程获取音频文件的原始信号波形,原信号幅值和原始信号频谱图如下:

然后通过加一个高斯噪声对其分析可得加噪声后信号波形,加噪声后幅值和加噪声后信号频谱图如下:

最后再通过N阶低通滤波器对噪声信号滤波,在Matlab中,FIR 滤波器利用函数filter

对信号进行滤波,从而得到滤波后信号波形,滤波后幅值和滤波后信号频谱图:

程序

[x]=wavread('C:\Users\h\Desktop\xinhao1.wav');

X=fft(x,2048);

figure(1)

fs=abs(X);

plot(fs);

xlabel('HZ');

ylabel('|Y(d)|');

subplot(2,2,1);

plot(x);

xlabel('HZ');

ylabel('|Y(d)|');

title('原始信号波形');

subplot(2,2,2);

plot(X);

xlabel('HZ');

ylabel('|Y(d)|');

title('原始信号幅值');

subplot(2,2,3);

plot(fs);

xlabel('HZ');

ylabel('|Y(d)|');

title('原始信号频谱');

figure(2)

N=length(x); %计算原始语音信号的长度

y1=0.05*randn(N,1); %加上一个高斯随机噪声

x1=x+y1;

x2=fft(x1,2048);

mt=abs(x1);

plot(mt);

xlabel('HZ');

ylabel('|Y(d)|');

subplot(2,2,1);

plot(x1);

xlabel('HZ');

ylabel('|Y(d)|');

title('加噪声后的波形');

subplot(2,2,2);

plot(x2);

xlabel('HZ');

ylabel('|Y(d)|');

title('加噪声后的幅值');

subplot(2,2,3);

plot(mt);

xlabel('HZ');

ylabel('|Y(d)|');

title('加噪声后的频谱');

ht=43000;

bits=16;

wavwrite(x1,ht,bits,'C:\Users\wentao\h\xinhao2.wav');%将加噪声的信号保存figure(3)

N=15;

wc=0.3;

[b,a]=butter(N,wc);

x3=fft(x);

fp=abs(x3);

y2=filter(b,a,x);

Y1=fft(y2);

subplot(2,2,1);

plot(y2);

xlabel('HZ');

ylabel('|Y(d)|');

title('滤波后信号的波形');

subplot(2,2,2);

plot(Y1);

xlabel('HZ');

ylabel('|Y(d)|');

title('滤波后信号的幅值');

subplot(2,2,3);

plot(fp);

xlabel('HZ');

ylabel('|Y(d)|');

title('滤波后信号的频谱');

wavwrite(y2,ht,bits,'C:\Users\h\Desktop\xinhao3.wav');%将滤波之后保存

相关文档
最新文档