基于matlab的采样定理验证

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

基于Matlab 的采样定理验证

一. 实验目的

● 了解信号恢复的方法

● 验证采样定理

二. 实验环境

● Matlab 应用软件

三. 实验原理

● 时域采样定理

对连续信号进行等间隔采样形成采样信号,采样信号的频谱是原连续信

号的频谱以采样频率为周期进行周期延拓形成的。

设连续信号的最高频为f max ,如果采样频率f s ≥2f max ,那么采样信号可

以唯一恢复出原连续信号;否则会出现频谱混叠,信号无法完全恢复。 ● 设计原理图

● 时域采样与频域分析

对一连续信号f (t )进行理想采样可以表示为

f s t =f t s t =

f (nT )δ(t −nT )∞n =−∞

其中f s t 为f t 的理想采样,s (t )为周期脉冲信号,即

s t =

δ(t −nT )∞n =−∞

由频域卷积定理,f s t 的傅立叶变换为

F s jω =1

T F j ω−nΩ ∞n =−∞

其中Ω=2π/T ,F (jω)为f (t )的傅立叶变换。上式表明,F s jω 为F (jω)的

周期延拓。只有满足采样定理时,才不会发生频率混叠失真。

在实际计算中,常采用如下等价的公式进行计算

F s jω =

f (nT )e −jnΩT ∞n =−∞

● 信号恢复

这里信号恢复是指由f s t 经过函数内插,恢复原始信号f (t )的过程,具体而言即

f t =f s t ∗h (t )

其中插值函数

h t =T

ωc

π

Sa (ωc t ) 其中ωc 为低通滤波器的截止频率。将f s t 和ℎ t 代入恢复公式,即得

f t =f s t ∗h t =T ωc

π f nT Sa (ωc (t −nT ))∞n =−∞

上式即信号恢复的基本公式。

内插公式表明模拟信号f (t )等于各采样点数值乘以对应内插函数的总和,只要采样频率高于信号频率的两倍,模拟信号就可以用它的采样值表示,而不丢失任何信息。

四. 预习内容

● 采样定理

五. 实验内容

● 画出连续时间信号的时域波形,信号为

f t =sin 120 π t +cos 50 π t +cos⁡(60 π t )

● 对信号进行采样,得到采样序列,画出采样频率分别为80Hz 、120 Hz 、150 Hz 时的采样序列波形。

● 对不同采样频率下的采样序列进行频谱分析,绘制其幅频曲线,并比较各频率下采样序列和幅频曲线的差别。

● 对原始信号进行频谱分析,将其与序列频谱分析的结果做比较。 ● 由采样序列恢复连续信号,画出时域波形,并与原始波形进行比较。

六.思考题

●为何频谱有旁瓣?

●采样频率为120Hz时,为何不能无失真恢复?

七.实验报告要求

●绘制原信号的时域波形与频域幅频曲线。

●分别以80Hz、120 Hz、150 Hz对原信号进行采样,绘制采样序列及其幅频

曲线。

●对采样序列进行插值恢复,绘制重构信号及其幅频曲线。

●从时频两方面对恢复信号和原始信号进行比较,并得出结论。

●回答思考题。

附录

采样部分

function fz=sampling(fy,fs)

%fz是模拟信号,以字符串形式输入

%fs是采样频率

fs0=10000;tp=0.1;

t=[-tp:1/fs0:tp];

k1=0:9999;k2=-9999:-1;

m1=length(k1);m2=length(k2);

f=[fs0*k2/m2,fs0*k1/m1]; %设置原信号频率数组

w=[-2*pi*k2/m2,2*pi*k1/m1];

fx1=eval(fy);

FX1=fx1*exp(-j*[1:length(fx1)]'*w);

figure

%画原始波形

subplot(211);plot(t,fx1,'r');

title('原始信号');xlabel('时间(s)');

axis([min(t),max(t),min(fx1),max(fx1)]);

line([min(t),max(t)],[0,0]);

%画原信号幅度谱

subplot(212);plot(f,abs(FX1),'r');

title('幅度谱');xlabel('频率(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(fy);

FZ=fz*exp(-j*[1:length(fz)]'*w);

figure;

%画采样序列波形

subplot(211);stem(t,fz,'.');

title('采样信号');xlabel('时间(s)');

line([min(t),max(t)],[0,0]);

%画采样信号幅度谱

subplot(212);plot(f1,abs(FZ),'m');

title('采样信号幅度谱');xlabel('频率(Hz)');

-------------------------------------------------------------------

恢复部分

function fh=recons(fz,fs)

%第一个输入是采样序列

%第二个输入是采样频率

T=1/fs;dt=T/10;tp=0.1;

t=-tp:dt:tp;n=-tp/T:tp/T;

TMN=ones(length(n),1)*t-n'*T*ones(1,length(t));

fh=fz*sinc(fs*TMN); %由采样恢复原信号

k1=0:9999;k2=-9999:-1;

m1=length(k1);m2=length(k2);

w=[-2*pi*k2/m2,2*pi*k1/m1];

FH=fh*exp(-j*[1:length(fh)]'*w); %恢复信号的傅立叶变换

figure;

%画出恢复的波形

subplot(211);plot(t,fh,'g');

st=strcat('由取样频率',num2str(fs),'恢复');

title(st);xlabel('时间(s)');

相关文档
最新文档