资源描述
抽样定理的应用
摘要
抽样定理表示为若频带宽度有限的,要从抽样信号中无失真地恢复原信号,抽样频率应大于2倍信号最高频率。抽样频率小于2倍频谱最高频率时,信号的频谱有混叠。抽样频率大于2倍频谱最高频率时,信号的频谱无混叠。
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。这为我们的本次设计提供了强大并良好的环境!
本设计要求通过利用matlab对模拟信号和语音信号进行抽样,通过傅里叶变换转换到频域,观察波形并进行分析。
关键词:抽样 Matlab
目录
一、设计目的: 2
二、设计原理: 2
1、抽样定理 2
2、MATLAB简介 2
3、语音信号 3
4、Stem函数绘图 3
三、设计内容: 4
1、已知g1(t)=cos(6πt),g2(t)=cos(14πt),g3(t)=cos(26πt),以抽样频率fsam=10Hz对上述三个信号进行抽样。在同一张图上画出g1(t),g2(t),g3(t)及其抽样点,对所得结果进行讨论。 4
2、选取三段不同的语音信号,并选取适合的同一抽样频率对其进行抽样,画出抽样前后的图形,并进行比较,播放抽样前后的语音。 6
3、选取合适的点数,对抽样后的三段语音信号分别做DFT,画图并比较。 10
四、总结 12
五、参考文献 13
绪论
当今,随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域,数字信号处理技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科;它与国民经济息息相关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注数字化、智能化和网络化是当代信息技术发展的大趋势,而数字化是智能化和网络化的基础,实际生活中遇到的信号多种多样,例如广播信号、电视信号、雷达信号、通信信号、导航信号等等。上述这些信号大部分是模拟信号,也有小部分是数字信号。模拟信号是自变量的连续函数,自变量可以是一维的,也可以是二维或多维的。大多数情况下一维模拟信号的自变量是时间,经过时间上的离散化即抽样,完成抽样定理的全过程。
一、设计目的:
1、掌握Matlab的工作环境及其使用。
2、掌握对模拟信号和语音信号的抽样过程。
3、掌握离散傅里叶变换的有关性质,利用Matlab实现DFT变换。
二、设计原理:
1、抽样定理
抽样是时间上连续的模拟信号变成一系列时间上离散的抽样序列的过程。 抽样定理要解决的是,能否由此抽样序列无失真的恢复出模拟信号。 对一个频带受限的、时间连续的模拟信号抽样,当抽样速度达到一定的数值时,那么根据它的抽样值就能无失真恢复原模拟信号。也就是说,若要传输模拟信号,不一定要传输模拟信号本身,只需要传输有抽样得到的抽样即可。因此,抽样定理是模拟信号数字化的理论依据。 抽样的过程是将输入的模拟信号与抽样信号相乘,通常抽样信号时一个周期为T的周期脉冲信号,抽样后得到的信号称为抽样信号。
2、MATLAB简介
MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。MATLAB是MathWorks公司于1982年推出的一款功能强大、易于使用的高效数值计算和可视化软件,它为进行算法开发、数据计算、信号分析与可视化提供了交互式应用开发环境,主要包括基本数学计算、编程环境(M语言)、数据可视化、GUIDE等。并附加了大量支持建模、分析、计算应用的工具箱来扩展MATLAB基本环境,用于解决特定领域的工程问题,如今MATLAB已广泛应用于通信、信号处理、生物医学、自动控制等领域。
3、语音信号
语音信号时一种非平稳的时变信号,它带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在于方便有效的提取并表示语音信号所携带的信息。
4、Stem函数绘图
各种不同的绘图函数分别适用于不同的场合,使用“stem”绘制针状图最简单,从附录中提供的MatLab原代码可以看出,只需要将需要绘制的数据存放在一个数组中,然后将这个数组作为参数传递给“stem”函数就可以得到输出图形。
三、设计内容:
1、已知g1(t)=cos(6πt),g2(t)=cos(14πt),g3(t)=cos(26πt),以抽样频率fsam=10Hz对上述三个信号进行抽样。在同一张图上画出g1(t),g2(t),g3(t)及其抽样点,对所得结果进行讨论。
(1)、设计思路
模拟信号被抽样通常是按照等时间间隔进行的,模拟信号被抽样后成为抽样信号,它在时间上是离散的但幅值仍然是连续的所以是离散模拟信号。
(2)、设计过程
Matlab源程序代码如下:
k1=0:0.01:2;
k2=0:0.1:2;
g1=cos(6*pi*k1);
g2=cos(6*pi*k2);
subplot(3,2,1);
plot(k1,g1);
axis([0,2,-1.5,1.5]);
title('g1=cos(6*pi*t) 原信号');
xlabel('t');ylabel('g1(t)');
subplot(3,2,2);
stem(k2,g2);
axis([0,2,-1.5,1.5]);
title('g1=cos(6*pi*t) 抽样频率fsam=10Hz');
xlabel('k');ylabel('g1[k]');
k3=0:0.01:2;
k4=0:0.1:2;
g3=cos(14*pi*k3);
g4=cos(14*pi*k4);
subplot(3,2,3);
plot(k3,g3);
axis([0,2,-1.5,1.5]);
title('g2=cos(14*pi*t) 原信号');
xlabel('t');ylabel('g2(t)');
subplot(3,2,4);
stem(k4,g4);
axis([0,2,-1.5,1.5]);
title('g2=cos(14*pi*t) 抽样频率fsam=10Hz');
xlabel('k');ylabel('g2[k]');
k5=0:0.001:2;
k6=0:0.1:2;
g5=cos(26*pi*k5);
g6=cos(26*pi*k6);
subplot(3,2,5);
plot(k5,g5);
axis([0,2,-1.5,1.5]);
title('g3=cos(26*pi*t) 原信号');
xlabel('t');ylabel('g3(t)');
subplot(3,2,6);
stem(k6,g6);
axis([0,2,-1.5,1.5]);
title('g3=cos(26*pi*t) 抽样频率fsam=10Hz');
xlabel('k');ylabel('g3[k]');
得出仿真图如下:
由图比较可知:当抽样频率相等时,原信号频率越高,越难恢复。虽然信号时域表达式不同,但在以抽样频率fm=10Hz抽样后,各离散信号具有相同的时域表达式,所以当抽样频率过小时,所得离散信号可能存在较大失真,无法反映原信号的特征,所以在给定一个信号后,我们应给出合适的抽样频率,抽样频率过小时失真较多,抽样频率过大时又造成了浪费,抽样信号符合我们给定的要求即可,这样得到的信号才能在最大程度保留原信号的特征的基础上节约资源。
2、选取三段不同的语音信号,并选取适合的同一抽样频率对其进行抽样,画出抽样前后的图形,并进行比较,播放抽样前后的语音。
(1)、实现步骤
a)、语音信号的获取
应用windows下录音机或其它软件,录制一段自己的语音信号,时间控制在5s左右,保存为wav文件。
[x,fs,bits]=wavread('平凡之路.wav')
后得到: Fs = 44100
b)、wav信号的频谱分析
首先画出语音信号的时域波形,然后对于语音信号进行频谱分析。在MATLAB中,利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性。
n = length (y) %求出语音信号的长度
Y=fft(y,n); %傅里叶变换
c)、wav信号的抽样
根据wav信号的频谱特点,设计一个抽样函数并与wav语音信号相乘,便可以进行抽样,调节不同频率fs,得到抽样后的信号及频谱。
Matlab抽样信号程序代码:
n=1:10;
fs=44100;T=1/fs;
L(n)=1;
z=stem(n,L(n));
plot(z);
axis([0 10 0 1]);
xlabel('显示的个数n');
ylabel('幅度y');
legend('抽样脉冲信号');
抽样函数图形如下所示:
d)、对声音的回放
在MATLAB中,函数sound可以对声音进行回放,可以感觉抽样前后的声音有变化
sound(y,Fs,nbits); %回放语音信号
(2)、设计过程
Matlab源程序代码如下:
clear all;
[x,fs,bits]=wavread('平凡之路.wav');
sound(x,fs);
figure
plot(x);
xlabel('时间t');
ylabel('幅度A');
legend('原始语音信号')
n=1:30;
fs=94100;T=1/fs;
L(n)=1;
figure
z=stem(n,L(n));
axis([0 30 0 1]);
xlabel('显示的个数n');
ylabel('幅度y');
legend('抽样脉冲信号');
sound(x*z,fs);
figure
plot(x*z);
xlabel('时间t');
ylabel('幅度y');
legend('抽样后信号图');
N1=length(x);
f1=fft(x);
w1=2/N1*[0:N1/2-1];
figure
subplot(2,1,1);
plot(w1,abs(f1(1:N1/2)));
legend('抽样前声音信号的频谱');
xlabel('频率x');
ylabel('幅度y');
N2=length(x*z);
f2=fft(x*z);
w2=2/N2*[0:N2/2-1];
subplot(2,1,2);
plot(w2,abs(f2(1:N2/2)));
legend('抽样后声音信号的频谱');
xlabel('频率x');
ylabel('幅度y');图示:
由图可知:当抽样率变为原来的2后,可听出音乐信号,但音乐明显比原来速度播放的快,播放时间缩短,而且音乐中听到的更多的是高频成分。如果继续增加抽样率,当抽样率变为原来的五倍时,已经听不出原信号了,且播放时间缩的更短。当抽样率变为原来的1/2,仍可辨别出音乐信号,但此时音乐中主要是低频成分,音乐信号听起来播放速度明显比原信号慢了,而且播放时间也比原来延长了。如果继续降低抽样率,当抽样率变为原来的五分之一时,已经不能辨别出音乐信号了,且播放时间比原来更长。由此可知,音乐信号的音调和抽样频率fs有关。
3、选取合适的点数,对抽样后的三段语音信号分别做DFT,画图并比较。
(1)、实现方法
离散傅里叶变换是有限长序列的傅里叶变换,它相当于把信号的傅里叶变换进行等频率间隔采样,并且有限长序列的离散傅里叶变换和周期序列的离散傅里叶级数本质是一样的。
(2)、设计过程
Matlab源程序代码(以256点为例):
clear all;
[x,fs,bits]=wavread('父亲.wav');
n=1:10;
k=0:255;
fs=44100;T=1/fs;
L(n)=1;
z=stem(n,L(n));
dft_256=fft(x*z,256);
plot(k/256,abs(dft_256),'*');
grid on;
xlabel('Normalized frequency'); %归一化频率
ylabel('Magnitude'); %间隔
图示
256点的离散傅里叶变换:
2048点的离散傅里叶变换:
由图可知:对抽样后的语音信号选择合适点数做DFT时,点数越多,图形越接近原始抽样后的频谱。
四、总结
数字信号处理已成为今一门极其重要的学科和技术领域,数字信号处理技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。
通过本次课程设计,熟练掌握了Matlab编译系统的应用,对抽样定理及其过程有了更深的体会,并且学会了对语音信号的采集及抽样等过程,将信号从时域用离散傅立叶变换转换到频域,加深了对信号抽样前后变化的理解。
14
五、参考文献
1、郑君里等.信号与系统(第二版).北京:高等教育出版社.2000
2、程佩青.数字信号处理(第3 版) [M] .北京:清华大学出版社,2008
3、高西金、丁玉美等《数字信号处理第三版》西安电子科技大学出版社。
4、张志涌.精通MATLAB6. 5 版[M] .北京:北京航空航天大学出版社,2004
展开阅读全文