《信号与系统》实验指导书
武汉理工大学教材中心
2009年7月
实验一 常用连续时间信号的产生
一、实验目的
1、了解常用连续时间信号的产生方法;
2、掌握MATLAB程序的编程方法;
3、熟悉MATLAB函数的调用方法。
二、实验原理
在时间轴上连续取值的信号,称为连续时间信号。
常用的时域连续信号主要有单位冲激信号、单位阶跃信号、实指信号、复指信号、正(余)弦信号、方波信号、锯齿波信号、抽样信号等。
1、单位冲激信号
2、单位阶跃信号
3、实指信号
4、复指信号
5、正(余)弦信号
6、抽样信号
三、实验用函数
1、plot
功能:绘制二维图形。
调用格式:
plot(t,y);t为横轴,y为纵轴的线性图形。
2、length
功能:计算某一变量的长度或采样点数。
调用格式:
N=length(t);计算时间向量t的个数并赋给变量N。
3、axis
功能:限定图形坐标的范围。
调用格式:
axis([x1,x2,y1,y2]);横坐标从x1—x2,纵坐标从y1—y2。
4、real
功能:取某一复数的实部。
调用格式:
x=real(h);取复数h的实部赋给x。
5、imag
功能:取某一复数的虚部。
调用格式:
y=imag(h);取复数h的实部赋给y。
6、abs
功能:求幅值或绝对值。
调用格式:
x=abs(h);取复数h的幅值x。
7、angel
功能:求相位。
调用格式:
y=angel(h);取复数h的相位赋给y。
8、square
功能:产生矩形波。
调用格式:
x=square(t);产生周期是,幅值从-1~1的方波。
x=square(t,duty);产生指定周期的矩形波,其中,duty用于指定脉冲宽度与整个周期的比例。
9、sawtooth
功能:产生锯齿波或三角波。
调用格式:
x=sawtooth(t);产生周期是,幅值从-1~1的锯齿波。
x=sawtooth(t,width);用于产生三角波,当width=0.5时,可产生对称的标准三角波;当width=1时,就产生锯齿波。
四、参考实例
例1.1 用Matlab产生一个单位阶跃信号。在的区间里,在t=1处跃变。
%先建立函数stepseq(t,t0)
function y=stepseq(t,t0)
y=(t-t0>=0);
%编写主程序调用该函数
t=-3:0.01:5;
t0=1;
y=stepseq(t,t0);
plot(t,y)
axis([-3,5,-0.2,1.2])
程序运行结果如图1-1所示:
图1-1 阶跃波形
例1.2 产生A=2,a=-0.3或a=0.3的实指信号,并在的范围内显示波形。
Matlab程序如下:
A=2; a1=-0.3; a2=0.3;
t=-5:0.01:5;
y1=A*exp(a1*t);
y2=A*exp(a2*t);
subplot(2,1,1); plot(t,y1)
subplot(2,1,2); plot(t,y2)
程序运行结果如图1-2所示
图1-2 实指信号波形
例1.3 绘制信号的波形。
Matlab程序如下:
t=0:0.01:3;
a=-3; b=4;
f=exp((a+j*b)*t);
subplot(2,2,1); plot(t,real(f)); title('实部');
subplot(2,2,2); plot(t,imag(f)); title('虚部') ;
subplot(2,2,3); plot(t,abs(f)); title('幅值');
subplot(2,2,4); plot(t,angle(f)); title('相位');
程序运行结果如图1-3所示
图1-3 复指信号波形
例1.4 周期矩形信号。一连续周期矩形信号频率为10Hz,信号幅度在-1~1之间,脉冲宽度与周期的比例是1:2,用128点采样,显示三个周期的信号波形。
Matlab程序如下:
f1=10;Um=1;N=128;
T=1/f1;nt=3;dt=T/N;
t=0:dt:nt*T;
xt=Um*square(2*pi*f1*t);
plot(t,xt)
axis([0,nt*T,-1.1,1.1])
程序运行结果如图1-4所示
图1-4 周期矩形信号波形
例1.5 锯齿波信号。试绘制频率为10Hz,采样频率为100Hz,幅度在-1~1之间,两个周期的三角波和锯齿波。
Matlab程序如下:
f1=10;Um=1;nt=2;
fs=100;N=fs/f1;
T=1/f1;dt=T/N;
t=0:dt:nt*T;
x1=Um*sawtooth(2*pi*f1*t);
x2=Um*sawtooth(2*pi*f1*t,0.5);
subplot(2,1,1);plot(t,x1)
subplot(2,1,2);plot(t,x2)
程序运行的结果如图1-5所示
图1-5 周期锯齿波波形
五、实验任务
1、调试部分例题程序,掌握Matlab基本操作方法。
2、编写程序,完成下列函数波形:
1}
2}
3)
六、实验报告
1、简述实验目的、原理。
2、写出上机调试通过的实验任务的程序并描述其图形曲线。
3、思考题:使用Matlab时需注意的问题。
实验二 连续系统的响应求解
一、实验目的
1、加深对LTI系统的频率基本概念的理解。
2、了解利用MATLAB进行连续时间系统研究的基本方法。
3、熟悉相关函数的使用方法,并能编写简单的程序实现响应求解。
二、实验原理
由连续时间系统的时域和频域分析方法可知,线性时不变系统的微分方程式为:
对于复杂信号激励下的线性系统,可以将激励信号在时域中分解为单位脉冲信号或单位阶跃信号,把这些单位激励信号分别加在系统中求其响应,然后把这些响应叠加,即可得到复杂信号加在系统中的零状态响应。
三、实验用函数
1、impulse
功能:求解连续系统的冲激响应。
调用格式:
impulse(b,a):计算并显示出连续系统的冲激响应h(t)的波形。
impulse(b,a,t):当用户指定t值时,t为实数,将显示连续时间系统在0~t秒间的冲激响应波形,t为向量(t1:dt:t2),则显示指定时间范围内的冲激响应波形。
2、step
功能:求解连续系统的阶跃响应。
调用格式:
step(b,a):计算并显示出连续系统的阶跃响应g(t)的波形。
step(b,a,t):当用户指定t值时,t为实数,将显示连续时间系统在0~t秒间的阶跃响应波形,t为向量(t1:dt:t2),则显示指定时间范围内的阶跃响应波形。
3、lsim
功能:求解连续系统的零状态响应。
调用格式:
lsim(b,a,x,t):计算并显示出连续系统的零状态响应的波形。
四、实例
1、已知一个RLC串联振荡电路系统函数为
其中L=22mH,C=2000pF,R=100,求其时域的冲激响应和阶跃响应。
MATLAB程序如下:
L=22e-3; C=2e-9; R=100;
a=[L*C,R*C,1]; b=[1];
t=0:1e-6:8e-4;
ht=impulse(b,a,t);
gt=step(b,a,t);
subplot(1,2,1)
plot(t,ht); title('冲激响应 ')
subplot(1,2,2)
plot(t,gt); title('阶跃响应 ')
程序运行结果如图2-1:
图2-1 冲激响应和阶跃响应
2、用仿真函数lsim计算连续系统的零状态响应。
例2.3 已知系统的微分方程为:
系统的输入信号为:,求其零状态响应。
Matlab程序如下:
ts=0; te=5; dt=0.01; t=ts:dt:te;
b=[1]; a=[1,2,100];
f=10*sin(2*pi*t);
y=lsim(b,a,f,t);
plot(t,y)
程序执行结果如图3-3所示
图2-2
五、实验任务
1、输入并运行例题程序,熟悉基本指令的使用。
2、已知某连续时间系统的微分方程为:,求当输入信号为,该系统的零状态响应r(t)。
六、实验报告
1、简述实验目的和原理。
2、列写上机调试通过的程序,并描绘其波形曲线。
实验三 连续系统的卷积应用
一、实验目的
1、熟悉Matlab卷积函数的调用方法;
2、掌握应用卷积求解连续时间系统响应的方法,通过实验加深对卷积定理的认识。
二、实验原理
卷积是信号与系统分析中一个重要的工具,它反映了求解系统响应的物理过程。
1、卷积的定义式:
2、卷积的图解法:
卷积的图解法能直观地理解卷积的计算过程,特别是对只有波形而不易写出其函数表达式的函数进行卷积运算时。
其运算步骤:
1)自变量t变换为:将函数f1(t),f2(t)换成;
2)反褶:将函数以纵轴为对称轴反折,得到;
3)平移:将反褶后的信号沿横轴平移t(t>0右移,t<0左移);
4)相乘:将函数和的重叠部分相乘;
5)积分:沿轴对乘积函数积分。
3、卷积性质
交换律、分配律、结合律、时移、卷积的微分与积分等。
三、实验用函数
1、卷积函数conv
功能:进行两个序列的卷积运算。
调用格式:
y=conv(x,h);用于求解两有限长序列的卷积。
2、lsim
功能:对连续系统的响应进行仿真。
调用格式:
y=lsim(b,a,x,t);将输入信号x加在由b,a定义的连续时间系统,将求出的数值解存入变量y中,如果单独调用函数lsim(b,a,x,t),则直接在图形区域显示零状态响应的时域仿真波形。
四、参考实例
1、在利用Matlab提供的卷积函数进行卷积运算时,主要是确定卷积结果的时间区间。conv函数默认两信号的时间序列从n=0开始,卷积结果对应的时间序列也从n=0开始。
例2.1 已知两信号分别为:
求两信号的卷积和并画出卷积波形。
Matlab程序如下:
t1=0:0.1:10;
f1=exp(-0.6*t1);
t2=0:0.1:15;
f2=ones(1,length(t2));
y=conv(f1,f2);
subplot(3,1,1); plot(f1)
subplot(3,1,2); plot(f2)
subplot(3,1,3); plot(y)
程序运行结果如图3-1所示
图3-1
2、任意信号的卷积运算。由于conv函数默认信号的时间从0开始,如果有信号不是从0开始,则需要编程用两个向量来确定一个信号,一个是信号波形的非零幅度样值,一个是其对应的时间向量。通过编写函数实现上述功能。
扩展函数为sconv,其代码如下:
function [y,ny]=sconv(x1,x2,t1,t2,dt)
y=conv(x1,x2);
ny1=t1(1)+t2(1);
ny2=t1(length(x1))+t2(length(x2));
ny=ny1:dt:ny2;
例2.1 已知两信号分别为:
f1(t)=0.5t (0
f2(4)=2t (-1
计算两信号的卷积并画出卷积波形。
Matlab程序如下:
p= 0.01;
t1= 0:p:2; f1= 0.5*t1;
t2= -1:p:3; f2= 2*t2;
[f,k]=sconv (f1,f2,t1,t2,p);
subplot(3,1,1); plot(t1,f1)
subplot(3,1,2); plot(t2,f2)
subplot(3,1,3); plot(k,f)
程序运行结果如图3-2所示
图3-2
五、实验任务
1、调试运行参考程序,理解其基本意义。
2、设h[t]=(0.9)tu[t],输入x[t]=u[t]-u[t-10],求系统输出y[t]=x[t]*h[t] (其中 -5<=t<=10)
六、实验报告
1、简述实验目的、原理。
2、写出上机调试通过的实验任务的程序并描述其图形曲线。
3、思考题:运用卷积函数conv时需要注意什么问题。
实验四 连续时间信号的傅立叶分析
一、实验目的
1、熟悉傅立叶的基本概念。
2、掌握MATLAB中连续时间信号频谱的分析方法。
3、熟悉相关函数的使用方法。
二、实验原理
任一周期性连续时间信号如果满足狄利赫莱条件,可通过傅立叶级数求得其频谱
其逆变换表达式为
而非周期信号不能直接由傅立叶级数表示。但可以借助傅立叶分析方法导出非周期信号的傅立叶变换。
一个非周期连续时间信号,其频谱可由傅立叶变换得
其逆变换表达式为
对连续时间信号进行处理时,首先要将其离散化,才能利用MATALB进行频谱分析。处理时一般把周期信号的一个周期作为窗口的显示内容,对非周期信号则将信号的非零部分作为窗口显示的内容。然后将窗口长度根据需要分成N份。
三、实验用函数
1、linspace
功能:对向量进行线性分割。
调用格式:
linspace(a,b,n):在a和b之间均匀产生n个值。
2、grid
功能:在指定的图形坐标上绘制分割线。
调用格式:
grid
3、mesh
功能:绘制三维网格图。
调用格式:
mesh(x,y,z):绘制三维网格图。
四、实例
1、非周期信号的频谱
有一非周期方波信号x(t)的脉冲宽度为1ms,信号持续时间为2ms,在0~2ms区间外信号为0。试求其含有20次谐波的信号的频谱特性。求其逆变换并与原时间信号的波形进行比较。
解:取窗口长度为0~2ms,信号的傅立叶变换为
按MATLAB作数值计算的要求,将时间t分成N份,用相加来代替积分,
求和问题转换为用x(t)行向量乘以列向量来实现。X=x*exp(-j*t’*w)*dt
MATLAB程序:
T=2;f1=1/T;N=256; %输入窗口长度、频率和采样点数
t=linspace(0,T,N); %进行时间分割,在0~T之间均匀地产生N点
dt=T/(N-1);
x=[ones(1,N/2),zeros(1,N/2)]; %建立时间信号x(t)
f=linspace(-(20*f1),(20*f1),N); %进行频率分割,在-20~20次谐波间均匀产生N点
w=2*pi*f;
X=x*exp(-j*t'*w)*dt; %求信号的傅立叶变换
subplot(1,2,1); plot(f,abs(X)); grid; title('非周期信号的幅度谱')
dw=(20*2*pi*f1)/(N-1); %求两个频率样点的间隔
x2=X*exp(j*w'*t)/pi*dw; %求傅立叶逆变换
subplot(1,2,2); plot(t,x,'r',t,x2); title('原信号与傅立叶逆变换比较')
程序运行结果如图4-1
图4-1
2、周期信号的频谱
设有一周期方波信号,幅度E=1.5V,周期T=100,脉冲宽度与周期之比为,时间轴上采样点数取1000点。试求其含有20次谐波的信号的频谱特性;求其傅立叶逆变换波形并与原时间波形进行比较。
解:取窗口长度为0~T,由题意信号的傅立叶级数为
其傅立叶级数逆变换为
MATLAB程序:
T=100;f1=1/T;N=1000;
t=linspace(0,T,N);
dt=T/(N-1);
x=1.5*[ones(1,N/2),zeros(1,N/2)];
n=[-20:20];
w1=2*pi*f1;
X=x*exp(-j*t'*n*w1)*dt/T;
subplot(1,2,1); stem(n,abs(X)); grid; title('周期信号的幅度谱')
x2=X*exp(j*n'*w1*t);
subplot(1,2,2); plot(t,x,'r',t,x2); title('原信号与傅立叶逆变换比较')
程序运行结果如图4-2
图4-2
3、用MATLAB图形观察吉布斯效应。(提示:任意周期信号表示为傅立叶级数时,需要无限多项才能逼近原信号,但在实际应用中经常采用有限项级数来代替无限项级数。所选项数越多越接近原信号。当原信号是脉冲信号时,其高频分量主要影响脉冲的跳变沿,低频分量主要影响脉冲的顶部,因此,输出信号波形总是要发生失真,该现象称为吉布斯现象。)
一个以原点为中心奇对称的周期性方波,可以用奇次正弦波的叠加来逼近,即
,假定方波的脉冲宽度为400,周期为800,观察正弦波分别取不同次谐波的逼近情况。
MATLAB程序:
T1=800;nf=19;
t=0:1:T1/2;
w1=2*pi/T1;
N=round((nf+1)/2);
y=zeros(N,max(size(t)));
x=zeros(size(t));
for k=1:2:nf
x=x+sin(w1*k*t)/k;
y((k+1)/2,:)=x;
end
mesh(y);
axis([0,T1/2,0,N,0,1])
五、实验任务
1、输入并运行例题程序,熟悉基本指令的使用。
2、已知一个脉冲信号,在窗口为100ms的范围内,脉冲宽度与信号的周期之比为1/4,进行256点的采样,显示原时域信号和0~20次谐波的频谱特性。
六、实验报告
1、简述实验目的、原理。
2、写出上机调试通过的实验任务的程序并描述其图形曲线。
实验五 连续系统的零极点分析
一、实验目的
1、观察连续系统的零极点对系统冲激响应的影响。
2、了解连续系统的零极点与系统因果性、稳定性的关系。
3、熟悉相关函数的使用方法。
二、实验原理
线性系统的稳定性
一个连续系统的稳定性由其自身的性质决定,与激励信号无关。系统的特性可以用系统函数H(s)和系统的冲激响应h(t)来表征。
因果系统可划分为三种情况:
1)稳定系统。当H(s)全部极点落在s左半平面,则系统是稳定的。
2)不稳定系统。当H(s)极点落在s右半平面,或在虚轴上具有二阶以上的极点,则经过足够长的时间后,h(t)在继续增大,则系统是不稳定的。
3)临界稳定系统。当H(s)极点落在虚轴上,且只有一阶,则经过足够长的时间后,h(t)趋于一个非零的数值或形成一个等幅振荡,则系统处于临界稳定。
三、实验用函数
1、roots
功能:求多项式的根。
调用格式:
r=roots(a):由多项式的分子和分母系数向量求根向量。其中,多项式的分子或分母系数向量按降幂排列,得到的根向量为列向量。
2、tf2zp
功能:将系统传递函数模型转换为系统零—极点增益模型。
调用格式:
[z,p,k]=tf2zp(num,den):输入传递函数分子、分母的系数向量,求得零—极点增益模型中零点向量、极点向量及增益系数。且均为列向量。
3、zp2tf
功能:将系统零—极点增益模型转换为传递函数模型。
调用格式:
[num,den]=zp2tf(z,p,k):输入零—极点增益模型的零点向量、极点向量及增益系数,求得传递函数分子、分母系数向量。
4、pzmap
功能:显示LTI系统的零极点分布图
调用格式:
pzmap(b,a):绘制由行向量b和a构成的系统函数所确定的零极点分布图。
pzmap(p,z):绘制由零点和极点构成的零极点分布图。
[p,z]=pzmap(b,a):由行向量b和a构成的系统函数确定零极点。
四、实例
1、已知系统函数:
求出该系统的零极点,并画出其零极点分布图。
解:由已知条件可得,其分子、分母的系数向量分别为:
b=[1,-1];
a=[1,2,2];
MATLAB实现:
b=[1,-1];
a=[1,2,2];
zs=roots(b);
ps=roots(a);
plot(real(zs),imag(zs),'o',real(ps),imag(ps),'kx','markersize',12)
axis([-2,2,-2,2]);
grid;
legend('零点','极点');
程序运行结果如图5-1:
图5-1
2、已知系统函数分别为:
求这些系统的零极点分布图及系统的冲激响应,并判断系统的稳定性。
解:由已知条件可得:
该系统函数的系数向量分别为:b=[1];a=[1,1]
该系统函数的系数向量分别为:b=[1];a=[1,2,17]
MATLAB程序:
b1=[1]; a1=[1,1];
subplot(2,2,1); pzmap(b1,a1);
axis([-2,2,-1,1]);
subplot(2,2,2); impulse(b1,a1);
axis([0,5,0,1.2]);
b2=[1]; a2=[1,2,17];
subplot(2,2,3); pzmap(b2,a2);
axis([-2,2,-6,6]);
subplot(2,2,4); impulse(b2,a2);
axis([0,5,-0.1,0.2]);
程序运行结果如图5-2:
图5-2
由上图可看出,以上两个系统的极点均落在S的左半平面,且系统的冲激响应的曲线随着时间增长而收敛,所以可以判定该系统是稳定的。
五、实验任务
1、输入并运行例题程序,熟悉基本指令的使用。
2、已知系统函数分别为
求以上系统的零极点分布图以及系统的冲激响应,并判断系统的稳定性。
3、已知系统函数为
求以上系统的零极点分布图以及系统的冲激响应,并判断系统的稳定性。
六、实验报告
1、简述实验目的、原理。
2、写出上机调试通过的实验任务的程序并描述其图形曲线。
3、思考题:研究S平面上多重极点对系统响应的影响。
实验六 连续系统的频率响应
一、实验目的
1、加深对连续系统的频率响应特性概念的理解。
2、掌握连续系统的零极点与频响特性之间的关系。
3、熟悉相关函数的使用方法。
二、实验原理
线性时不变系统的频域分析法是一种变换域分析法,它把时域中求解响应的问题通过傅立叶变换转换成频域中的问题。整个过程在频域内进行,因此它主要是研究信号频谱通过系统后产生的变化,利用频域分析法可分析系统的频率响应、波形失真、物理可实现等实际问题。
在时域分析中我们知道,系统的零状态响应等于输入信号与系统单位冲激响应的卷积积分,即
若e(t)、h(t)的傅立叶变换均存在,由时域卷积定理可知
有
称为系统函数,由于它是频率的函数,故又称为频率响应函数。一般为频率的复函数,又可写为幅值与相位的形式,即
式中为的幅值,其随频率变化关系称为幅频响应;为其相位,其随频率变化关系称为相频响应。
三、实验用函数
1、freqs
功能:连续时间系统的频率响应。
调用格式:
h=freqs(b,a,w):用于计算连续时间系统的复频域响应,其中,w用于指定频率值。
[h,w]=freqs(b,a):自动设定200个频率点来计算频率响应,将200个频率值记录在w中。
[h,w]=freqs(b,a,n):设定n个频率点计算频率响应。
freqs(b,a):不带输出变量的freqs函数,将在当前图形窗口中描绘幅频和相频曲线。
2、abs
功能:求幅值。
调用格式:
m=abs(h):用于求取h的幅值。
3、angle
功能:求相角。
调用格式:
p=angle(h):用于求取h的相角(以弧度为单位),相角介于之间。
四、实例
已知RC一阶高通电路图的系统函数H(s)为
其中:R=200,C=0.47。求其幅度频率响应与相位频率响应。
MATLAB程序
r=200;c=0.47e-6;
b=[r*c,0];
a=[r*c,1];
w=0:40000;
h=freqs(b,a,w);
subplot(2,1,1); plot(w,abs(h)); grid; ylabel('幅度')
subplot(2,1,2); plot(w,angle(h)/pi*180); grid; ylabel('相位')
程序执行结果如图6-1:
图6-1
五、实验任务
1、输入并运行例题程序,熟悉基本指令的使用。
2、已知二阶RLC并联电路如图所示,其中R=200,C=0.47,L=22mH。列写出该电路的系统函数,并求该系统的幅度频率响应、相位频率响应以及零极点分布图。(提示:系统函数)
二阶RLC并联电路
六、实验报告
1、简述实验目的、原理。
2、写出上机调试通过的实验任务的程序并描述其图形曲线。
3、思考题:连续系统的零极点对系统幅频响应有何影响?
实验七 信号的时域抽样与重建
一、实验目的
1、加深对对信号时域抽样与重建基本原理的理解。
2、了解用MATLAB语言进行信号时域抽样与重建的方法。
3、观察信号抽样与重建的图形。
二、实验原理
离散时间信号大多数由连续时间信号进行抽样获的。在信号进行处理的过程中,要使有限带宽信号被抽样后能够不失真地还原出原模拟信号,抽样信号的周期Ts及抽样频率Fs的取值必须符合奈奎斯特定理。
如果Fs的取值大于两倍的信号最高频率fm,只要经过一个低通滤波器,抽样信号就能不失真地还原出原模拟信号。反之,则频谱将发生混叠,抽样信号将无法不失真地还原出原模拟信号。
三、实例
1、对连续信号进行采样
已知一个连续时间信号
其中:f0=1HZ,取最高有限带宽频率fm=5f0。分别显示原连续时间信号波形和
3种情况下抽样信号的波形。
解:分别取Fs=fm、Fs=2fm、Fs=3fm三种抽样频率
MATLAB程序
f0=1;T=1/f0;
fm=5*f0;Tm=1/fm;
t=-2:0.1:2;
x=sin(2*pi*f0*t)+1/3*sin(6*pi*f0*t);
subplot(4,1,1);plot(t,x)
axis([min(t),max(t),1.1*min(x),1.1*max(x)]);
title('原连续信号和抽样信号');
for i=1:3;
fs=i*fm;Ts=1/fs;
n=-2:Ts:2;
xs=sin(2*pi*f0*n)+1/3*sin(6*pi*f0*n);
subplot(4,1,1+i);stem(n,xs,'filled');
axis([min(n),max(n),1.1*min(xs),1.1*max(xs)]);
end
程序执行结果如图7-1:
图7-1
2、连续信号和抽样信号的频谱
根据理论可知,信号的频谱图可以直观地反映出抽样信号能否恢复原模拟信号波形。通过对上例中3种情况求振幅频谱,来进一步分析和证明时域抽样定理。
MATLAB程序:
f0=1;T=1/f0;
t=-2:0.1:2;
N=length(t);
x=sin(2*pi*f0*t)+1/3*sin(6*pi*f0*t);
fm=5*f0;Tm=1/fm;
wm=2*pi*fm;
k=0:N-1;w1=k*wm/N;
X=x*exp(-j*t'*w1)*Tm;
subplot(4,1,1);plot(w1/(2*pi),abs(X))
axis([0,max(4*fm),1.1*min(abs(X)),1.1*max(abs(X))]);
for i=1:3;
if i<=2 c=0;else c=1; end
fs=(i+c)*fm;Ts=1/fs;
n=-2:Ts:2;
xs=sin(2*pi*f0*n)+1/3*sin(6*pi*f0*n);
N=length(n);
ws=2*pi*fs;
k=0:N-1;w=k*ws/N;
Xs=xs*exp(-j*n'*w)*Ts;
subplot(4,1,1+i);plot(w/(2*pi),abs(Xs));
axis([0,max(4*fm),1.1*min(abs(Xs)),1.1*max(abs(Xs))]);
end
程序运行结果如图7-2所示:
图7-2
从图7-2可以看出,当时,抽样信号的频谱没有混叠现象,反之,抽样信号的频谱发生了混叠,如图中第二幅图所示。
3、利用时域卷积重建例题信号
时域卷积是用时域抽样信号xs(t)与理想滤波器系统的单位冲激响应h(t)进行卷积积分来求解。卷积积分的公式通过推导化简为内插公式。
MATLAB程序:
f0=1;T0=1/f0; %基波频率、周期
fm=5*f0;Tm=1/fm; %最高频率为基波的5倍
t=0:0.01:3*T0;
x=sin(2*pi*f0*t)+1/3*sin(6*pi*f0*t);
subplot(4,1,1);plot(t,x)
for i=1:3;
fs=i*fm;Ts=1/fs; %设置不同采样频率、周期
n=0:(3*T0)/Ts;
t1=0:Ts:3*T0;
xs=sin(2*pi*f0/fs*n)+1/3*sin(6*pi*f0/fs*n); %抽样信号
T_N=ones(length(n),1)*t1-n'*Ts*ones(1,length(t1));
x1=xs*sinc(2*pi*fs*T_N); %内插公式计算
subplot(4,1,1+i);plot(t1,x1)
axis([min(t1),max(t1),1.1*min(x1),1.1*max(x1)])
end
程序运行结果如图7-3所示:
图7-3
从图7-3可以看出,当时,信号基本被还原,反之,信号出现失真,如图中第二幅图所示。
五、实验任务
1、输入并运行例题程序,熟悉基本指令的使用。
2、利由频域相乘重建信号。
(提示:满足奈奎斯特抽样定理的信号xs(t),只要经过一个理想的低通滤波器,其中
将原信号有限带宽以外的频率部分滤除,就可以重建x(t)信号,该方法从频域的角度进行处理,即用,则滤波器的输出端就会出现恢复的连续信号。)
六、实验报告
1、简述实验目的、原理。
2、写出上机调试通过的实验任务的程序并描述其图形曲线。
3、思考题:通过实验,总结信号抽样时需注意的问题,及使用那些方法进行信号的重建。
实验八 连续时间系统分析与设计(综合设计实验)
一、实验目的
1、理解连续时间系统的系统函数在分析连续系统的时域特性、频域特性及稳定性的重要作用及意义。
2、掌握利用MATLAB分析连续系统的时域响应、频率响应和零极点的基本方法。
3、掌握根据系统函数的零极点设计简单的滤波器的方法。
二、实验任务
根据系统零极点对幅频特性曲线影响设计下面系统
在S平面上配置零极点,并使用freqs命令绘出相应的幅频特性曲线,重复这个过程直至找到满足下面指标的零极点。并就观察零极点图与其对应的、 幅频响应之间的关系。
(1)设计一个2个零点、2个极点、具有实系数的高通滤波器,满足
(2)设计一个具有实系数的低通滤波器,满足
三、实验报告
1、简述实验目的、原理。
2、写出上机调试通过的实验任务的程序并描述其图形曲线。
3、总结本次设计所获得的经验与教训。
附录:
附录1、MATLAB的基本操作与使用方法
MATLAB的工作环境主要由命令窗口(Command Windows)、文本编辑器(File Editor)、图形显示窗口等组成。
命令窗口基本使用方法。在MATLAB命令窗口中输入一条命令,按
图1
如果一个程序比较复杂的话,则不适合在命令窗口中进行处理,而应采用文件方式,这将用到文本编辑器。在文本编辑器中把程序写成一个由多条语句构成的文件并存储起来,需要运行时,在命令窗口输入文件回车即可。如图2所示。
图2
文本编辑器除了可以编写程序以外,还可以编写函数,可以像系统的库函数一样被调用。为区别程序和函数,函数文件的第一行是函数申明行,关键字是function,如:
function y=two_add(x1,x2)
下面以两个数求和为例了解函数的编写和调用过程,如图3所示。
图3
程序的执行结果是数值的话将直接在命令窗口中显示,如果是图形,将自动打开图形显示窗口进行显示。
MATLAB使用的注意事项:
1、变量不需要先定义,随时用随时起名字即可;
2、用文本编辑器编写的程序、函数的文件扩展名均为”.m”;
3、程序文件在起名字时要注意不能用数字和中文作为文件名;
4、函数文件在保存时会自动以定义的函数名作为其文件名,不允许修改,否则函数无法运行;
5、变量和常量的标识符的最大长度为19个字符,标识符中的第一个字符必须是英文字符。
6、MATLAB变量区分大小写。
附录2、综合设计实验参考解法和参考程序
[解]:在高通与低通滤波器的设计中,是采用在S平面上配置零极点,观察其对应的频谱图是否符合要求。
首先根据二阶高通滤波器模型:
以下解法只供参考,方法不唯一:若令
1) 当,,可以得出:
2) 考虑一种情况:当,,如下图所示:
即
3) 考虑另一种理想情况:,,如下图所示:
即
由2)、3)得出一组大致范围:
我们采用试探方法给上面模型配置不同数值:
[1]
[2]
[3]
[4]
[5]
结果表明:[3]显示的频谱图比较符合数据要求。另外,极点实部越小,通带越靠后;虚部越大,频谱波形的陡峭程度越大。
二阶低通滤波器模型:
我们采用试探方法给上面模型配置不同数值:(大概原则是)
[1]k=50,b=5,c=50;(发现频谱有一部分超出要求范围,其他指标非常接近要求)
[2]k=60,b=10,c=60;(发现频谱带宽不符合要求)
[3]k=65,b=15,c=65;(同[2],可见b与c“差距”越小,带宽越小)
[4]k=70,b=10,c=70;(仍然是带宽不符合,需加大b与c“差距”)
[5]k=70,b=8,c=70;(符合要求)
根据已经得到的数据知道此时极点,如果还需进一步观察极点对频谱图的影响,可以对极点的实部和虚部或者模的大小进行调整,并观察它们的规律。
参考程序:
[1] 高通的一个参考程序:
k=1;
b=[1 0 0]*k;
a=conv([1 85+157j],[1 85-157j]);
sys=tf('s'); %系统函数
sys=tf(b,a)
p=roots(a);
z=roots(b);
figure(1)
subplot(1,2,1); %零极点图
plot(real(p),imag(p),'*');hold on;
plot(real(z),imag(z),'o'); xlabel('t');title('零极点图');
grid on
T=0:0.1:3;
h=impulse(b,a,T);
subplot(1,2,2); %对应的冲激响应h(t)
plot(h); axis([0 30 -400 100]);
xlabel('t');title('冲激响应h(t)');
grid on
f=0:0.1:100;
w=2*pi*f;
H=freqs(b,a,w);
figure(2) %频谱图
plot(w,abs(H));xlabel('w');title('频谱图');
grid on
[2]低通的一个参考程序:
b=70;
a=[1 8 70];
sys=tf('s'); %系统函数
sys=tf(b,a)
p=roots(a)
z=roots(b);
figure(1)
subplot(1,2,1); %零极点图
plot(real(p),imag(p),'*');hold on;
plot(real(z),imag(z),'o');xlabel('t');title('零极点图');
grid on
T=0:0.1:3;
h=impulse(b,a,T);
subplot(1,2,2); %对应的冲激响应
plot(h);xlabel('t');title('冲激响应h(t)');
grid on
f=0:0.1:6;
w=2*pi*f;
H=freqs(b,a,w);
figure(2) %频谱图
plot(w,abs(H));xlabel('w');title('频谱图');
grid on
本文来源:https://www.2haoxitong.net/k/doc/90ae9806ad51f01dc381f1ad.html
文档为doc格式