ws = a*wm; % Sampling frequency Ts = 2*pi/ws; % Sampling period
N = fix(t0/Ts); % Determine the number of samplers n = -N:N;
nTs = n*Ts; % The discrete time variable xs = (1+cos(pi*nTs)).*(u(nTs+1)-u(nTs-1)); % The sampled version of x(t) subplot(2,2,2) % Plot xs
stem(n,xs,'.'); xlabel('Time index n'); grid on, title('Sampled version x[n]'); xr = zeros(1,length(t)); % Specify a memory to save the reconstructed signal L = length(-N:N);
xa = xr;
figure(2); % Open a new figure window to see the demo of signal reconstruction stem(nTs,xs,'.'); xlabel('Time index n'); grid on;hold on for i = 1:L m = (L-1)/2+1-i;
xa = Ts*(wc)*xs(i)*sinc((wc)*(t+m*Ts)/pi)/pi; plot(t,xa,'b:');axis([-2,2,-0.5,2.5]); hold on pause
xr = xr+xa; % Interpolation end
plot(t,xr,'r'); axis([-2,2,-0.5,2.5]); hold on figure(1); subplot(223)
plot(t,xr,'r');axis([-2,2,-0.5,2.5]); xlabel('Time t');grid on
title('Reconstructed signal xr(t)');
% Compute the error between the reconstructed signal and the original signal error = abs(xr-x); subplot(2,2,4)
plot(t,error);grid on title('Error');xlabel('Time t') 程序运行结果图: 当ws/wm= 3时
23
图3-7 程序运行图
图3-8 时域采样图 注意:根据抽样定理 ws/wm的值必须大于或等于2
三、实验内容及步骤
实验前,必须首先阅读本实验原理,了解所给的MATLAB相关函数,读懂所给出的全部范例程序。实验开始时,先在计算机上运行这些范例程序,观察所得到的信号的波形图。并结合范例程序所完成的工作,进一步分析程序中各个语句的作用,从而真正理解这些程序的编程算法。 实验前,一定要针对下面的实验项目做好相应的实验准备工作,包括事先编写好相应的实验程序等事项。
练习1、什么是抽样定理?信号采样后重建的步骤,抽样频率如何设置? 练习2、 给范例程序Program4_1加注释。
练习3、分别进行设置ws/wm= 2,ws/wm= 1,ws/wm= 3,并运行抽样信号重建程序,并
根据抽样定理及重建条件分析三种设置情况下的结果。
四、实验报告要求
1、按要求完整书写你所编写的全部MATLAB程序
2、详细记录实验过程中的有关信号波形图(存于自带的U盘中),图形要有明确的标题。全部的MATLAB图形应该用打印机打印,然后贴在本实验报告中的相应位置,禁止复印件。
3、实事求是地回答相关问题,严禁抄袭。
本实验完成时间: 年 月 日
24
实验四 信号系统仿真
一、实验目的
1、了解信号中常用的几种滤波器的使用方法。
2、掌握信号的基本运算,并掌握对要求信号傅里叶变换。 3、理解信号通过滤波器的滤波函数的调用。 4、掌握信号时域分析与频域分析的区别。
5、了解一个系统对输入信号处理,观察信号前后的变化。
二、实验原理
1、在《信号与系统》课程中,要分析一个系统,首先要建立描述该系统基本特征的数学模型,然后用数学方法(或计算机仿真等)求出它的解答,并对结果赋予实际含义。连续或离散系统除用数学函数方程描述外,还可用框图表示系统的激励和响应之间的数学运算关系。一个方框(或其他形状)可以表示一个具有某种功能的部件,也可以表示一个子系统。每个方框内部的具体结构并非考察重点,而只注重其输入、输出之间的关系。
表示系统功能的常用基本单元有:积分器(用于连续系统)或延迟单元(用于离散系统)以及加法和数乘器(标量乘法器),对于连续系统,有时还需用延时时间为T的延时器。
2、一般信号通过系统进行分析有两种方法:时域分析法和频域分析法。下面是一个系统分析的简化图:
上图中x(t)、y(t)分别为系统的时域激励信号和响应信号,h(t)是系统的单位冲激响应,它们三者之间的关系为:y(t )?x(t)*h(t),由傅里叶变换的时域卷积定理可得到:LTI系统y(t)x(t)h(t)Y(j?)?X(j?)H(j?) X(j?)H(j?)Y(j?)4.1
信号x(t)通过LTIY(j?)系统分析图 或者: H(j?)? 4.2
X(j?)H(j?)为系统的频域数学模型,它实际上就是系统的单位冲激响应h(t)的傅里叶变换。即
? H(j?)??h(t)e???j?tdt 4.3
由于H(j?)实际上是系统单位冲激响应h(t)的傅里叶变换,如果h(t)是收敛的,或者说是绝对可积(Absolutly integrabel)的话,那么H(j?)一定存在,而且H(j?)通常是复数,因此,也可以表示成复数的不同表达形式。在研究系统的频率响应时,更多的是把它表示成极坐标形式:
25
H(j?)?H(j?)ej?(?) 4.4
上式中,H(j?)称为幅度频率相应(Magnitude response),反映信号经过系统之后,信号各频率分量的幅度发生变化的情况,?(?)称为相位特性(Phase response),反映信号经过系统后,信号各频率分量在相位上发生变换的情况。H(j?)和?(?)都是频率?的函数。
对于一个系统,其频率响应为H(j?),其幅度响应和相位响应分别为H(j?)和?(?),如果作用于系统的信号为x(t)?ej?t,则其响应信号为
0y(t)?H(j?0)ej?0t?H(j?0)ej?(?0)ej?0t?H(j?0)ej(?0t??(?0)) 4.5
若输入信号为正弦信号,即x(t) = sin(?0t),则系统响应为
y(t)?H(j?0)sin(?0t)?|H(j?0)|sin(?0t??(?0)) 3.6
可见,系统对某一频率分量的影响表现为两个方面,一是信号的幅度要被H(j?)加权,二是信号的相位要被?(?)移相。
由于H(j?)和?(?)都是频率?的函数,所以,系统对不同频率的频率分量造成的幅度和相位上的影响是不同的。
3、我们通过两个例子来说明信号通过系统的两种分析方法:
例题1、一个正弦信号6*sin(20*pi*t)通过一个系统(此系统实现对信号乘以以个正弦sin(2*pi*t))通过编写MATLAB程序,仿真此系统的功能并绘制出信号通过此系统后的信号波形与原来的变化。
程序如下:
t=0:0.01:2*pi; m=6*sin(20*pi*t); g=sin(2*pi*t); y=m.*g; subplot(311)
plot(t,m);
title('6*sin(20*pi*t) signal'); subplot(312)
plot(t,g);
title(' sin(2*pi*t) signal'); subplot(313); plot(t,y);
26
title('通过系统后的信号波形') 程序运行后的结果
图4-1 程序运行结果图
例题2、产生三个正弦成分(5Hz,15Hz,30Hz)的信号,然后,设计一滤波器来去除5Hz和30Hz,的正弦信号,保留15Hz信号的系统。
程序如下:
%产生含有3个正弦分量的信号 Fs=100; t=(1:100)/Fs; s1=sin(2*pi*t*5); s2=sin(2*pi*t*15); s3=sin(2*pi*t*30); s=s1+s2+s3; subplot(221); plot(t,s);
xlabel('Time(second)');
ylabel('Time waveform');
title('含有三个正弦分量的信号');
%产生一个8阶的IIR带通滤波器,通带10Hz到20Hz,其频率响应如下: [b,a]=ellip(4,0.1,40,[10 20]*2/Fs); [H,w]=freqz(b,a,512);
subplot(222);
plot(w*Fs/(2*pi),abs(H));
title('所设计的10Hz~20Hz的带通滤波器 ');
xlabel('Frequency(Hz)');ylabel('Mag.of frequency response'); grid on;
%对信号进行滤波 sf=filter(b,a,s);
27