“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]);
4
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]');
5
得出仿真图如下:
由图比较可知:当抽样频率相等时,原信号频率越高,越难恢复。虽然信号时域表达式不同,但在以抽样频率fm=10Hz抽样后,各离散信号具有相同的时域表达式,所以当抽样频率过小时,所得离散信号可能存在较大失真,无法反映原信号的特征,所以在给定一个信号后,我们应给出合适的抽样频率,抽样频率过小时失真较多,抽样频率过大时又造成了浪费,抽样信号符合我们给定的要求即可,这样得到的信号才能在最大程度保留原信号的特征的基础上节约资源。 2、选取三段不同的语音信号,并选取适合的同一抽样频率对其进行抽样,画出抽样前后的图形,并进行比较,播放抽样前后的语音。 (1)、实现步骤 a)、语音信号的获取
6
应用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');
7
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);
8