信号抽样及抽样定理 - 图文

更新时间:2023-11-05 21:49:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验五 信号抽样及抽样定理

一、实验目的

1. 学会运用MATLAB完成信号抽样以及对抽样信号的频谱进行分析 2. 学会运用MATLAB改变抽样时间间隔,观察抽样后信号的频谱变化

3. 学会运用MATLAB对抽样后的信号进行重建

二、 实验原理 (一)信号抽样

信号抽样是利用抽样脉冲序列

p(t)从连续信号f(t)中抽取一系列的离散

值,通过抽样过程得到的离散值信号称为抽样信号,记为fs(t)。从数学上讲,

抽样过程就是信号相乘的过程,即fs(t)?f(t)?p(t)

因此,可以使用傅里叶变换的频域卷积性质来求抽样信号fs(t)的频谱。常用的抽样脉冲序列有周期矩形脉冲序列和周期冲激脉冲序列。

上式表明,信号在时域被抽样后,它的频谱是原连续信号频谱以抽样角频率为间隔周期的延拓,即信号在时域抽样或离散化,相当于频域周期化。在频谱的周期重复过程中,其频谱幅度受抽样脉冲序列的傅里叶系数加权,即被Pn加权。

可以看出,Fs(?)是以?s为周期等幅地重复。

(二)抽样定理

如果f(t)是带限信号,带宽为?m,则信号f(t)可以用等间隔的抽样值来唯一表示。f(t)经过抽样后的频谱Fs???就是将f(t)的频谱F???在频率轴上以抽样频率?s为间隔进行周期延拓。因此,当?s?2?m时,周期延拓后频谱Fs???不会产生频率混叠;当?s?2?m时,周期延拓后频谱Fs???将产生频率混叠。通常把满足抽样定理要求的最低抽样频率fs?2fm(fs?奎斯特频率,把最大允许的抽样间隔Ts?(二)抽样定理

如果f(t)是带限信号,带宽为?m,则信号f(t)可以用等间隔的抽样值来唯一表示。f(t)经过抽样后的频谱Fs???就是将f(t)的频谱F???在频率轴上以抽样频率?s为间隔进行周期延拓。因此,当?s?2?m时,周期延拓后频谱Fs???不会产生频率混叠;当?s?2?m时,周期延拓后频谱Fs???将产生频率混叠。通常把满足抽样定理要求的最低抽样频率fs?2fm(fs?奎斯特频率,把最大允许的抽样间隔Ts??s?,fm?m)称为奈2?2?11?称为奈奎斯特间隔。 fs2fm?s?,fm?m)称为奈2?2?11?称为奈奎斯特间隔。 fs2fm

(三)信号重建

抽样定理表明,当抽样定理小于奈奎斯特间隔时,可以使用抽样信号唯一表示原信号,即信号的重建。为了从频谱中无失真的恢复原信号,可以采用截止频率为?c??m的理想低通滤波器。

上式表明连续信号可展开为抽样函数Sa?t?的无穷级数,该级数的系数为抽样值。

利用MATLAB中的函数sinc(t)?sin(?t)来表示Sa?t?,所以可获得由f?nTs?重?t?c建f?t?的表达式,即f?t??Ts???c?????fnTsinct?nT??ss?

???n???n???三、实验环境

Matlab7.0

四、实验内容

1、设有三个不同频率的正弦信号,频率分别为f1?100Hz,f2?200Hz,

f3?3800Hz;现在使用抽样频率fs?4000Hz对这三个信号进行抽样,使用

MATLAB命令画出各抽样信号的波形和频谱,并分析其频率混叠现象。 程序如下:

clear all;close all;clc;

ts=2.5*10^(-4); dt=0.000001; t1=0:dt:0.01;

ft=sin(2*pi*100*t1).*(t1>=0); subplot(221);

plot(t1,ft),grid on %axis([-4 4 -0.1 1.1])

xlabel('time(sec)'),ylabel('f(t)') title('100Hz正弦信号') n=500; k=-n:n;

w=pi*k/(n*dt);

fw=dt*ft*exp(-i*t1'*w); subplot(222)

plot(w,abs(fw)),grid on

%axis([-10 10 -0.2 1.1*pi]);

xlabel('/comega'),ylabel('f(w)') title('100Hz正弦信号的频谱') t2=0:ts:0.01;

fst=sin(2*pi*100*t2).*(t2>=0); subplot(223)

plot(t1,ft,':'),hold on stem(t2,fst),grid on %axis([-4 4 -0.1 1.1])

title('100Hz抽样后的信号'),hold off fsw=ts*fst*exp(-i*t2'*w); subplot(224)

plot(w,abs(fsw)),grid on %axis([-10 10 -0.2 1.1*pi]) title('100Hz抽样信号的频谱')

100Hz正弦信号10.50-0.5-100.005time(sec)100Hz抽样后的信号10.50-0.5-100.0050.010-4-202x 1046-16100Hz正弦信号的频谱x 1032f(w)10-40.01f(t)-21x 10-14100Hz抽样信号的频谱x 100/comega2460.5clear all;close all;clc; ts=2.5*10^(-4); dt=0.000001; t1=0:dt:0.01;

ft=sin(2*pi*200*t1).*(t1>=0); subplot(221);

plot(t1,ft),grid on %axis([-4 4 -0.1 1.1])

xlabel('time(sec)'),ylabel('f(t)') title('200Hz正弦信号') n=500; k=-n:n;

w=pi*k/(n*dt);

fw=dt*ft*exp(-i*t1'*w); subplot(222)

plot(w,abs(fw)),grid on

%axis([-10 10 -0.2 1.1*pi]);

xlabel('/comega'),ylabel('f(w)') title('200Hz正弦信号的频谱') t2=0:ts:0.01;

fst=sin(2*pi*200*t2).*(t2>=0); subplot(223)

plot(t1,ft,':'),hold on stem(t2,fst),grid on %axis([-4 4 -0.1 1.1])

title('200Hz抽样后的信号'),hold off fsw=ts*fst*exp(-i*t2'*w); subplot(224)

plot(w,abs(fsw)),grid on %axis([-10 10 -0.2 1.1*pi]) title('200Hz抽样信号的频谱')

200Hz正弦信号10.50-0.5-100.005time(sec)200Hz抽样后的信号10.50-0.5-100.0050.0120-4640.0143-16200Hz正弦信号的频谱x 10f(w)f(t)210-4-20/comega246x 10-15200Hz抽样信号的频谱x 10-202x 1046

clc;clear all; Ts=1/4000;

t1=-0.0003:0.00001:0.0003; ft=sin(2*pi*3800*t1); subplot(2,2,1) plot(t1,ft) grid on

axis([-0.0004 0.0004 -1.2 1.2]) title('3800Hz正弦信号')

N=500; k=-N:N;

W=pi*k/(N*0.00001);

Fw=0.00001*ft*exp(-j*t1'*W); subplot(2,2,2) plot(W,abs(Fw)) grid on

axis([-200000 200000 -0.0001 0.0005]) title('3800Hz正弦信号频谱')

t2=-0.0003:Ts:0.0003; fst=sin(2*pi*3800*t2); subplot(2,2,3) plot(t1,ft,':') hold on

stem(t2,fst) grid on

axis([-0.0004 0.0004 -1.2 1.2]) title('3800Hz抽样后信号')

Fsw=Ts*fst*exp(-j*t2'*W); subplot(2,2,4) plot(W,abs(Fsw)) grid on

axis([-200000 200000 -0.0001 0.001]) title('3800Hz抽样后信号频谱')

3800Hz正弦信号10.50-0.5-1-4-202x 103800Hz抽样后信号10.50-0.5-1-4-202x 104-4-4x 103800Hz正弦信号频谱4204-4-2-1012510x 10-43800Hz抽样后信号频谱x 1050-2-101x 1025

2、结合抽样定理,利用MATLAB编程实现Sa(t)信号经过冲激脉冲抽样后得到的抽样信号fs?t?及其频谱,并利用fs?t?构建Sa(t)信号。 (1)高抽样时

clc;clear all;

Ts=1/5;

t1=-5:0.01:5; ft=sinc(t1); subplot(2,2,1) plot(t1,ft) grid on

axis([-6 6 -0.5 1.2]) title('Sa(t)')

N=500; k=-N:N;

W=pi*k/(N*0.01);

Fw=0.01*ft*exp(-j*t1'*W); subplot(2,2,2) plot(W,abs(Fw)) grid on

axis([-60 60 -0.05 1.5]) title('Sa(t)频谱')

t2=-5:Ts:5; fst=sinc(t2); subplot(2,2,3) plot(t1,ft,':') hold on

stem(t2,fst) grid on

axis([-6 6 -0.5 1.2]) title('抽样后信号')

Fsw=Ts*fst*exp(-j*t2'*W); subplot(2,2,4) plot(W,abs(Fsw)) grid on

axis([-50 50 -0.05 1.5]) title('抽样后信号频谱')

Sa(t)10.50-0.5-505抽样后信号10.50-0.5-505(2)临界抽样时

clc;clear all;

Ts=1/2;

t1=-5:0.01:5;

Sa(t)频谱1.510.50-50050抽样后信号频谱1.510.50-50050

ft=sinc(t1); subplot(2,2,1) plot(t1,ft) grid on

axis([-5 5 -0.5 1.2]) title('Sa(t)')

N=500; k=-N:N;

W=pi*k/(N*0.01);

Fw=0.01*ft*exp(-j*t1'*W); subplot(2,2,2) plot(W,abs(Fw)) grid on

axis([-50 50 -0.05 1.5]) title 'Sa(t)频谱')

t2=-5:Ts:5; fst=sinc(t2); subplot(2,2,3) ploT(t1,ft,':') hold on

stem(t2(fst) grid on

axis([-5 5 -0.5 1.2]) title('抽样后信号')

Fsw=Ts*fst*exp(-j*t2'*W); subplot(2,2,4) plot(W,abS(Fsw)) grid on

axis([P 50 -0.05 1.5]) title'抽样后信号频谱')

Sa(t)10.50-0.5-505抽样后信号10.50-0.5-505

(3)低抽样时

clc;clear all; Ts=1/1.2;

t1=-5:0.01:5; ft=sinC(t1); subplod(2,2,1) plot(t1,ft) grid on

axiS([-5 5 -0.5 1.2]) ditle('Sa(t)'

N=500; k=-N:N;

W=0i*k/(N*0.01);

Fw=0.01.ft*exp(-j*t1'*W); subplot(22,2) plot(W,abs(Fw)) grid on

axis([-50 50 -0.05 1.5]) title 'Sa(t)频谱')

t2=-5:Ts:5;

Sa(t)频谱1.510.50-50050抽样后信号频谱1.510.50-50050

fst=sinc(t2); subplot(2,2,3) plot(t1,ft,':') hold on

stem(t2,fst) grid on

axis([-5 5 -0.5 1.2]) title('抽样后信号')

Fsw=Ts*fst*exp(-j*t2'*W); subplot(2,2,4) plot(W,abs(Fsw)) grid on

axis([-50 50 -0.05 1.5]) title('抽样后信号频谱')

2,2)

plot(W,abs(Fw)) grid on

axis([-50 50 -0.05 1.5]) title 'Sa(t)频谱')

t2=-5:Ts:5; fst=sinc(t2); subplot(2,2,3) plot(t1,ft,':') hold on stem(t2,fst) grid on

axis([-5 5 -0.5 1.2]) title('抽样后信号')

Fsw=Ts*fst*exp(-j*t2'*W); subplot(2,2,4) plot(W,abs(Fsw)) grid on

axis([-50 50 -0.05 1.5]) title('抽样后信号频谱')

Sa(t)1.510.50-0.5-510.50-50Sa(t)频谱0抽样后信号50抽样后信号频谱501.510.50-0.5-510.50-5005050

wm=400*pi; wc=1.2*wm; ts=1/4000; n=1:100; nts=n*ts;

fs=(sin(2*pi*100*nts)./(2*pi*100*nts)).*(nts>=0); t=0.0000001:0.00001:0.1;

ft=fs*ts*wc/pi*sinc((wc/pi)*(ones(length(nts),1)*t-nts'*ones(1,length(t)))); t1=0.0000001:0.00001:0.1;

f1=(sin(2*pi*100*t1)./(2*pi*100*t1)).*(t1>=0); subplot(211)

plot(t1,f1,':'),hold on stem(nts,fs),grid on hold off subplot(212) plot(t,ft),grid on

实验总结:

Matlab的功能很强大,可以处理信号的时域频域的问题等等,得好好的练习并使用Matlab。

本文来源:https://www.bwwdw.com/article/51r2.html

Top