信号与系统及MATLAB实现Word格式.doc
- 文档编号:897488
- 上传时间:2023-04-29
- 格式:DOC
- 页数:26
- 大小:421.50KB
信号与系统及MATLAB实现Word格式.doc
《信号与系统及MATLAB实现Word格式.doc》由会员分享,可在线阅读,更多相关《信号与系统及MATLAB实现Word格式.doc(26页珍藏版)》请在冰点文库上搜索。
w=2*pi;
phi=pi/6;
8;
%定义时间点
ft=A*sin(w*t+phi);
%计算这些点的函数值
%画图命令
%在图上画方格
例1-3抽样信号抽样信号Sa(t)=sin(t)/t在MATLAB中用sinc函数表示。
定义为
t=-3*pi:
pi/100:
3*pi;
ft=sinc(t/pi);
plot(t,ft);
gridon;
axis([-10,10,-0.5,1.2]);
%定义画图范围,横轴,纵轴
title('
抽样信号'
)%定义图的标题名字
例1-4三角信号三角信号在MATLAB中用tripuls函数表示。
调用格式为ft=tripuls(t,width,skew),产生幅度为1,宽度为width,且以0为中心左右各展开width/2大小,斜度为skew的三角波。
width的默认值是1,skew的取值范围是-1~+1之间。
一般最大幅度1出现在t=(width/2)*skew的横坐标位置。
t=-3:
3;
ft=tripuls(t,4,0.5);
gridon;
axis([-3,3,-0.5,1.5]);
例1-5虚指数信号调用格式是f=exp((j*w)*t)
t=0:
15;
w=pi/4;
X=exp(j*w*t);
Xr=real(X);
%取实部
Xi=imag(X);
%取虚部
Xa=abs(X);
%取模
Xn=angle(X);
%取相位
subplot(2,2,1),plot(t,Xr),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]),
title('
实部'
);
subplot(2,2,3),plot(t,Xi),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]),
虚部'
subplot(2,2,2),plot(t,Xa),axis([0,15,0,max(Xa)+1]),title('
模'
subplot(2,2,4),plot(t,Xn),axis([0,15,-(max(Xn)+1),max(Xn)+1]),title('
相角'
%subplot(m,n,i)命令是建立m行n列画图窗口,并指定画图位置i
例1-6复指数信号调用格式是f=exp((a+j*b)*t)
a=-1;
b=10;
f=exp((a+j*b)*t);
subplot(2,2,1),plot(t,real(f)),title('
)
subplot(2,2,3),plot(t,imag(f)),title('
)
subplot(2,2,2),plot(t,abs(f)),title('
subplot(2,2,4),plot(t,angle(f)),title('
例1-7矩形脉冲信号矩形脉冲信号可用rectpuls函数产生,
调用格式为y=rectpuls(t,width),幅度是1,宽度是width,以t=0为对称中心。
t=-2:
2;
width=1;
ft=2*rectpuls(t,width);
plot(t,ft)
例1-8单位阶跃信号单位阶跃信号u(t)用“t>
=0”产生,调用格式为ft=(t>
=0)
t=-1:
5;
ft=(t>
=0);
axis([-1,5,-0.5,1.5]);
例1-9正弦信号符号算法
symst%定义符号变量t
y=sin(pi/4*t)%符号函数表达式
ezplot(y,[-16,16])%符号函数画图命令
或者
f=sym('
sin(pi/4*t)'
)%定义符号函数表达式
ezplot(f,[-16,16])
例1-10单位阶跃信号MATTLAB符号数学函数Heaviside表示阶跃信号,但要画图需在工作目录创建Heaviside的M文件
functionf=Heaviside(t)
f=(t>
0);
保存,文件名是Heaviside,调用该函数即可画图,例
t=-1:
f=heaviside(t);
plot(t,f)
axis([-1,3,-0.2,1.2])
y=sym('
Heaviside(t)'
ezplot(y,[-1,5]);
gridon
2.信号基本运算的MATLAB实现
信号基本运算是乘法、加法、尺度、反转、平移、微分、积分,实现方法有数值法和符号法
例1-11以f(t)为三角信号为例,求f(2t),f(2-2t)
t=-3:
0.001:
subplot(3,1,1);
plot(t,ft);
title('
f(t)'
ft1=tripuls(2*t,4,0.5);
subplot(3,1,2);
plot(t,ft1);
f(2t)'
ft2=tripuls(2-2*t,4,0.5);
subplot(3,1,3);
plot(t,ft2);
f(2-2t)'
例1-12已知f1(t)=sinwt,f2(t)=sin8wt,w=2pi,求f1(t)+f2(t)和f1(t)f2(t)的波形图
w=2*pi;
f1=sin(w*t);
f2=sin(8*w*t);
subplot(211)
plot(t,f1+1,'
:
'
t,f1-1,'
t,f1+f2)
gridon,title('
f1(t)+f2(t))'
subplot(212)
plot(t,f1,'
t,-f1,'
t,f1.*f2)
f1(t)*f2(t)'
符号算法也可实现上述运算,以信号的微积分运算为例说明符号算法应用
微分的调用格式为diff(function,’variable’,n)
积分的调用格式为int(function,’variable’,a,b)
式中function表示要微分或积分的函数,variable表示运算变量,n表示求导阶数,默认值是求一阶导数,a是积分下限,b是积分上限,ab默认是求不定积分。
例1-13求一阶导数的例题,已知,
clear
symsaxy1y2%定义符号变量a,x,y1,y2
y1=sin(a*x^2);
%符号函数y1
y2=x*sin(x)*log(x);
%符号函数y2
dy1=diff(y1,’x’)%无分号直接显示结果
dy2=diff(y2)%无分号直接显示结果
例1-14求积分的例题,,
clear
symsaxy3y4
y3=x^5-a*x^2+sqrt(x)/2;
y4=(x*exp(x))/(1+x)^2;
iy3=int(y3,'
x'
iy4=int(y4,0,1)
三、上机实验内容
1.验证实验原理中程序
2.画出信号波形
(1)
(2)
3.信号,求、波形
实验二离散信号与系统的时域分析
1.学会用MATLAB表示常用离散信号的方法;
2.学会用MATLAB实现离散信号卷积的方法;
3.学会用MATLAB求解离散系统的单位响应;
4.学会用MATLAB求解离散系统的零状态响应;
1.离散信号的MATLAB表示
表示离散时间信号f(k)需要两个行向量,一个是表示序号k=[],一个是表示相应函数值f=[],画图命令是stem。
例2-1正弦序列信号正弦序列信号可直接调用MATLAB函数cos,例,当是整数或分数时,才是周期信号。
画,波形程序是:
k=0:
40;
subplot(2,1,1)
stem(k,cos(k*pi/8),'
filled'
cos(k*pi/8)'
subplot(2,1,2)
stem(k,cos(2*k),'
cos(2*k)'
例2-2单位序列信号
本题先建立一个画单位序列的M函数文件,画图时调用。
M文件建立方法:
file/new/m-file在文件编辑窗输入程序,保存文件名用函数名。
functiondwxulie(k1,k2,k0)%k1,k2是画图时间范围,k0是脉冲位置
k=k1:
k2;
n=length(k);
f=zeros(1,n);
f(1,-k0-k1+1)=1;
stem(k,f,'
axis([k1,k2,0,1.5])
单位序列δ(k)'
保存文件名dwxulie.m
画图时在命令窗口调用,例:
dwxulie(-5,5,0)
例2-3单位阶跃序列信号
本题也可先建立一个画单位阶跃序列的M函数文件,画图时调用。
functionjyxulie(k1,k2,k0)
-k0-1;
kk=-k0:
nn=length(kk)
u=zeros(1,n);
uu=ones(1,nn);
stem(kk,uu,'
holdon
stem(k,u,'
holdoff
单位阶跃序列'
axis([k1k201.5])
保存文件名jyxulie.m
jyxulie(-3,8,0)
例2-4实指数序列信号,c、a是实数。
建立一个画实指数序列的M函数文件,画图时调用。
functiondszsu(c,a,k1,k2)
%c:
指数序列的幅度
%a:
指数序列的底数
%k1:
绘制序列的起始序号
%k2:
绘制序列的终止序号
x=c*(a.^k);
stem(k,x,'
plot([k1,k2],[0,0])
调用该函数画信号:
,波形。
dszsu(1,5/4,0,40)
dszsu(1,-3/4,0,40)
2.离散信号的卷积和
两个有限长序列f1,f2卷积可调用MATLAB函数conv,调用格式是f=conv(f1,f2),f是卷积结果,但不显示时间序号,可自编一个函数dconv给出f和k,并画图。
function[f,k]=dconv(f1,f2,k1,k2)
%Thefunctionofcomputef=f1*f2
%f:
卷积和序列f(k)对应的非零样值向量
%k:
序列f(k)的对应序号向量
%f1:
序列f1(k)非零样值向量
%f2:
序列f2(k)的非零样值向量
%k1:
序列f1(k)的对应序号向量
%k2:
序列f2(k)的对应序号向量
f=conv(f1,f2) %计算序列f1与f2的卷积和f
k0=k1
(1)+k2
(1);
%计算序列f非零样值的起点位置
k3=length(f1)+length(f2)-2;
%计算卷积和f的非零样值的宽度
k=k0:
k0+k3%确定卷积和f非零样值的序号向量
subplot(2,2,1)
stem(k1,f1) %在子图1绘序列f1(k)时域波形图
f1(k)'
xlabel('
k'
ylabel('
subplot(2,2,2)
stem(k2,f2) %在图2绘序列f2(k)时波形图
f2(k)'
subplot(2,2,3)
stem(k,f);
%在子图3绘序列f(k)的波形图
f(k)f1(k)与f2(k)的卷积和f(k)'
f(k)'
h=get(gca,'
position'
h(3)=2.5*h(3);
set(gca,'
h) %将第三个子图的横坐标范围扩为原来的2.5倍
例2-5求卷积和,
f1=[121];
k1=[-101];
f2=ones(1,5);
k2=-2:
[f,k]=dconv(f1,f2,k1,k2)
由运行结果知,f的长度等于f1和f2长度之和减一,f的起点是f1和f2的起点之和,f的终点是f1和f2的终点之和。
3.离散系统的单位响应
MATLAB提供画系统单位响应函数impz,调用格式是
impz(b,a)式中b和a是表示离散系统的行向量;
impz(b,a,n)式中b和a是表示离散系统的行向量,时间范围是0~n;
impz(b,a,n1,n2)时间范围是n1~n2;
y=impz(b,a,n1,n2)由y给出数值序列;
例2-6已知求单位响应。
a=[1,-1,0.9];
b=[1];
impz(b,a)
impz(b,a,60)
impz(b,a,-10:
40)
4.离散系统的零状态响应
MATLAB提供求离散系统零状态响应数值解函数filter,调用格式为filter(b,a,x),式中b和a是表示离散系统的向量,x是输入序列非零样值点行向量,输出向量序号同x一样。
例2-7已知,求零状态响应,范围0~20。
a=[1-0.250.5];
b=[11];
20;
x=(1/2).^t;
y=filter(b,a,x)
stem(t,x)
输入序列'
stem(t,y)
响应序列'
1.验证实验原理中程序
2.已知,画单位响应波形。
3.已知,输入,画输出波形,范围0~15。
实验三连续时间LTI系统的时域分析
1.学会用MATLAB求解连续系统的零状态响应;
2.学会用MATLAB求解冲激响应及阶跃响应;
3.学会用MATLAB实现连续信号卷积的方法;
1.连续时间系统零状态响应的数值计算
我们知道,LTI连续系统可用如下所示的线性常系数微分方程来描述,
在MATLAB中,控制系统工具箱提供了一个用于求解零初始条件微分方程数值解的函数lsim。
其调用格式
y=lsim(sys,f,t)
式中,t表示计算系统响应的抽样点向量,f是系统输入信号向量,sys是LTI系统模型,用来表示微分方程,差分方程或状态方程。
sys=tf(b,a)
式中,b和a分别是微分方程的右端和左端系数向量。
例如,对于以下方程:
可用获得其LTI模型。
注意,如果微分方程的左端或右端表达式中有缺项,则其向量a或b中的对应元素应为零,不能省略不写,否则出错。
例3-1已知某LTI系统的微分方程为
y’’(t)+2y’(t)+100y(t)=f(t)
其中,,求系统的输出y(t).
解:
显然,这是一个求系统零状态响应的问题。
其MATLAB计算程序如下:
ts=0;
te=5;
dt=0.01;
sys=tf([1],[1,2,100]);
t=ts:
dt:
te;
f=10*sin(2*pi*t);
y=lsim(sys,f,t);
plot(t,y);
xlabel('
Time(sec)'
ylabel('
y(t)'
2.连续时间系统冲激响应和阶跃响应的求解
在MATLAB中,对于连续LTI系统的冲激响应和阶跃响应,可分别用控制系统工具箱提供的函数impluse和step来求解。
其调用格式为
y=impluse(sys,t)
y=step(sys,t)
式中,t表示计算系统响应的抽样点向量,sys是LTI系统模型。
例3-2已知某LTI系统的微分方程为
y’’(t)+2y’(t)+100y(t)=10f(t)
求系统的冲激响应和阶跃响应的波形.
ts=0;
sys=tf([10],[1,2,100]);
t=ts:
h=impulse(sys,t);
figure;
plot(t,h);
xlabel('
ylabel('
h(t)'
g=step(sys,t);
plot(t,g);
g(t)'
3.用MATLAB实现连续时间信号的卷积
信号的卷积运算有符号算法和数值算法,此处采用数值计算法,需调用MATLAB
的conv()函数近似计算信号的卷积积分。
连续信号的卷积积分定义是
如果对连续信号和进行等时间间隔均匀抽样,则和分别变为离散时间信号和。
其中,为整数。
当足够小时,和既为连续时间信号和。
因此连续时间信号卷积积分可表示为
采用数值计算时,只求当时卷积积分的值,其中,n为整数,既
其中,实际就是离散序列和的卷积和。
当足够小时,序列就是连续信号的数值近似,既
上式表明,连续信号和的卷积,可用各自抽样后的离散时间序列的卷积再乘以抽样间隔。
抽样间隔越小,误差越小。
例3-3用数值计算法求与的卷积积分。
因为是一个持续时间无限长的信号,而计算机数值计算不可能计算真正的无限长信号,所以在进行的抽样离散化时,所取的时间范围让衰减到足够小就可以了,本例取。
程序是
dt=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 系统 MATLAB 实现