DSP实验六报告.docx
《DSP实验六报告.docx》由会员分享,可在线阅读,更多相关《DSP实验六报告.docx(13页珍藏版)》请在冰豆网上搜索。
DSP实验六报告
DSP第六次实验报告
一、实验内容:
一、频域抽样定理的验证
给定信号
。
1.利用DTFT计算信号的频谱
,一个周期内角频率离散为M=1024点,画出频谱图,标明坐标轴。
2.分别对信号的频谱
在区间
上等间隔抽样16点和32点,得到
和
。
离散傅里叶反变换后得到时域信号
和
。
3.画出信号
和
的图形,计算
与
和
的均方误差。
从时域角度上进行对比和分析,验证频域抽样定理。
4.利用内插公式,由
和
分别得到
的估计值,计算均方误差,从频域角度验证频率抽样定理。
二、音频信号处理
1、语音信号的采集
利用Windows附件中的录音机,录制一段自己的话音,时间在1s内。
在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
通过wavread函数的使用,理解采样频率、采样点数等概念。
2、语音信号的频谱分析
画出语音信号的时域波形,然后对语音号进行快速傅里叶变换,原始模拟信号的频谱特性,画出频谱图,标注坐标轴。
3、用滤波器对信号进行滤波
在离散时间域,使信号通过冲激响应为
的低通滤波器,得到系统的输出。
4、比较滤波前后语音信号的波形及频谱
画出滤波前后的时域波形及频谱,进行比较。
5、回放语音信号
在Matlab中,函数sound可以对声音进行回放,调用格式:
sound(x,fs,bits),感受滤波前后的声音的变化。
二、编程原理、思路和公式
实验一
(1)表示出来时域信号,用公式
编写子程序DTFT,调用子函数求解.
(2)利用w=(2*pik)/N,以及离散傅里叶反变换x(n)=IDFT[X(k)]=
编写子程序idft,调用恢复
和
。
(3)由公式B=B+(abs(x1(k))-x(k))^2;其中x1(k)分别为
和
。
(4)利用内插公式
其中
恢复之后计算和
的方差
实验二
(1)利用[z1,fs,bits]=wavread('I:
\hhxx.wav');调用应经存在I盘的录音hhxx。
(2)Y1=fft(y1);计算语音信号的频谱特性
(3)利用z2=conv(y1,h);计算语音信号和h的卷积,得到滤波后时域波形。
(4)在此调用fft计算滤波后的频谱特性
三、程序脚本,并注释
实验一
(1)
clc;clearall
n=0:
31;
n1=0;
n2=31;
n11=0:
13;x1=n11+1;%时域信号第一段
n22=14:
26;x2=27-n22;%时域信号第二段
n33=27:
31;x3=zeros(1,length(n33));%时域信号第三段
x=[x1,x2,x3];%表示的时域信号
M=1024;
w=-pi:
2*pi/M:
pi;
X=dtft2(x,n1,n2,M);%调用子函数计算
X=abs(X);figure
(1)plot(w,X);xlabel('w');ylabel('X');
实验一
(2)(3)
clc;clearall
n=0:
31;n1=0;n2=31;
n11=0:
13;x1=n11+1;
n22=14:
26;x2=27-n22;
n33=27:
31;x3=zeros(1,length(n33));
x=[x1,x2,x3];
M=16;
[X,w]=dtft2(x,n1,n2,M);
k=w*M/(2*pi);%频域进行32点抽样
magX=abs(X);
[x1,nx1]=IDFT(X,k);%调用IDFT的到
figure
(2)
subplot(211);
stem(nx1,abs(x1));
subplot(212);stem(n,x);x1=[x1,zeros(1,16)];
N=length(x);
B=0;
fork=1:
N
B=B+(abs(x1(k))-x(k))^2;%计算
和x(n)的方差;
EndE=B/N;
同理计算频域16点的抽样,以及回复的
和x(n)的方差
实验一(4)
clc;clearall
n=0:
31;n1=0;n2=31;n11=0:
13;x1=n11+1;n22=14:
26;x2=27-n22;
n33=27:
31;x3=zeros(1,length(n33));x=[x1,x2,x3];
M=1024;[X,w]=dtft2(x,n1,n2,M);X=abs(X);figure
(1)subplot(211)
plot(w,X);
xlabel('wrad');
ylabel('幅度');
title('幅频特性');
N=16;
k=0:
N-1;
X1=dft(x,N);
L=1024;
forb=0:
L-1
wn=2*pi*b/L;
sum=0;
fork1=0:
N-1
ifsin((wn-(2*pi*k1/N))/2)~=0
sum=sum+(1/N)*X1(k1+1)*(sin((wn-(2*pi*k1/N))*N/2)/sin((wn-(2*pi*k1/N))/2))*exp(-1j*(N-1)/2*(wn-(2*pi*k1/N)));
else
sum=sum+X1(k1+1);
end
end
Xejw(b+1)=sum;%利用插值定理进行恢复的得到回复的Xejw
end
k2=0:
L-1;
w2=2*pi*k2/L;
subplot(212)
plot(w2,abs(Xejw))
title('16的频域还原')
sum1=0;
B=0;
fork=1:
M
B=B+(abs(X(k))-abs(Xejw(k)))^2;%计算恢复后的频域和dtft的频域方差
end
E=B/M;
实验二的程度如下
clc;clear
[z1,fs,bits]=wavread('I:
\hhxx.wav');%调用函数画出时域信号
figure
(1)
plot(z1);
title('原始语音信号');
y1=z1(1:
length(z1));
Y1=fft(y1);%直接调用以得到原始频域信号
n=0:
length(z1)-1;
figure
(2)
plot(n,abs(Y1));
title('原始信号的频谱特性');n1=0:
31;
h=0.5.*(1-cos(2*pi.*n1./31));%通过系统及时频域卷积
z2=conv(y1,h);
n2=0:
length(z1)+30;figure(3)
plot(n2,z2);
title('滤波后时域波形');
yyy=fft(z2);figure(4)
plot(n2,absyyy);title('滤波后频域波形');
sound(z1,44100,16);%原来语音
sound(z2,44100,16);%滤波后语音
四、仿真结果、图形
实验一
图一是DTFT计算得到的
图二是频域16点抽样恢复的时域序列和原序列的对比(上面是恢复序列)
图三是频域32点抽样恢复的时域序列和原序列的对比
图五是频域恢复值和原来频域的对比(下面是16点频域恢复)
图六是频域恢复值和原来频域的对比(下面是32点频域恢复)
实验二
图七
图八
图九
图十
五、结果分析和结论
实验一计算的时域的反差16点E=25.2644二32点4.0178e-028,课件只有频域抽样的点数大于时域长度的时才可以无失真的恢复原来信号;并且频域16点插值抽样后恢复的频域与原来方差288.1964二32点方差1.8191e-026几乎为零,再一次验证了频域抽样定理。