数字信号处理实验四
(2013-04-08 15:36:23)
标签:
数字信号实验报告采样定理采样恢复 |
数字信号处理实验四
【实验目的】加深对采样定理(奈奎斯特采样定理)的理解,掌握对连续信号进行采样、恢复及对信号进行离散时间傅里叶变换的方法及编程。
【实验内容】
1、画出连续时间信号的时域波形及其幅频特性曲线,信号为
(x)= sin(2*pi*60*t)
2、 对信号进行采样,得到采样序列 ,画出采样频率分别为80Hz,120 Hz,150 Hz时的采样序列波形;
3、对不同采样频率下的采样序列进行频谱分析,绘制其幅频曲线,对比各频率下采样序列和的幅频曲线有无差别。
4、对信号进行谱分析,观察与3中结果有无差别。
5、由采样序列恢复出连续时间信号 ,画出其时域波形,对比与原连续时间信号的时域波形。
【参考代码】说明:代码中有两处eval_r( )函数,应将函数名中后面的下划线及字母r去掉,不知道什么原因,在Matlab的M文件编辑器及记事本中都没问题,发到博客上就变成这样了。大家在调试前,把这两处改过来。
另外,我这里的代码实际上由两个函数和一个主程序组成,两个函数要分别以指定的函数名保存,主程序单独以M文件方式编写,在主函数中要调用这两个函数。
%实现采样频谱分析绘图函数
function
fz=caiyang(fy,fs)
%第一个输入变量是原信号函数,信号函数fy以字符串的格式输入
%第二个输入变量是采样频率
fs0=10000;
t=[-tp:1/fs0:tp];
k1=0:999;
m1=length(k1);
f=[fs0*k2/m2,fs0*k1/m1];
w=[-2*pi*k2/m2,2*pi*k1/m1];
fx1=eval_r(fy);
FX1=fx1*exp(-j*[1:length(fx1)]'*w);
%求原信号的离散时间傅里叶变换
figure
% 画原信号波形
subplot(2,1,1),plot(t,fx1,'r')
title('原信号'), xlabel('时间t (s)')
axis([min(t),max(t),min(fx1),max(fx1)]) % 画原信号幅度频谱
subplot(2,1,2),plot(f,abs(FX1),'r')
title('原信号幅度频谱') , xlabel('频率f (Hz)')
axis([-100,100,0,max(abs(FX1))+5])
Ts=1/fs;
t1=-tp:Ts:tp;
f1=[fs*k2/m2,fs*k1/m1];
t=t1;
fz=eval_r(fy);
FZ=fz*exp(-j*[1:length(fz)]'*w);
%采样信号的离散时间傅里叶变换
figure
% 画采样序列波形
subplot(2,1,1),stem(t,fz,'.'),
title('取样信号') , xlabel('时间t (s)')
line([min(t),max(t)],[0,0])
% 画采样信号幅度频谱
subplot(2,1,2),plot(f1,abs(FZ),'m')
title('取样信号幅度频谱') , xlabel('频率f (Hz)')
%信号的恢复及频谱函数
function
fh=huifu(fz,fs)
%第一个输入变量是采样序列
%第二个输入变量是得到采样序列所用的采样频率
T=1/fs;
t=-tp:dt:tp;
TMN=ones(length(n),1)*t-n'*T*ones(1,length(t));
fh=fz*sinc(fs*TMN);
k1=0:999;
m1=length(k1);
w=[-2*pi*k2/m2,2*pi*k1/m1];
FH=fh*exp(-j*[1:length(fh)]'*w);
% 恢复后的信号的离散时间傅里叶变换
figure
% 画恢复后的信号的波形
subplot(2,1,1),plot(t,fh,'g'),
st1=sprintf('由取样频率fs=%d',fs);
st2='恢复后的信号';
st=[st1,st2];
axis([min(t),max(t),min(fh),max(fh)])
line([min(t),max(t)],[0,0])
f=[10*fs*k2/m2,10*fs*k1/m1];
subplot(2,1,2),plot(f,abs(FH),'g')
title('恢复后信号的频谱') , xlabel('频率f (Hz)')
axis([-100,100,0,max(abs(FH))+2]);
%主函数
f1='sin(2*pi*60*t) ';%输入一个信号
fs0=caiyang(f1,80); %频率 ,即 欠采样
fr0=huifu(fs0,80);
fs1=caiyang(f1,120);%频率 ,临 界采样
fr1=huifu(fs1,120);
fs2=caiyang(f1,150);%频率 ,即 过采样
fr2=huifu(fs2,150);