编号:*********
《信号与线性系统仿真》
实验报告
实验时间: 2013/12/29 实验班级: ************* 实验报告总份(片)数:12份(片) 实验教师: *******
信息工程 学院 实验室
广东工业大学
学院:信息工程 专业班级:************* 学号:******** 姓名:********** 教师评定_________________ 实验题目
1:使用经典法解 课本 P79 2.1(2)
''??y?t??2y?t??5y?t??f?t?,y?0??2,y?0???2
一、 实验目的与要求
使用Matlab 通过经典法解方程,分别求出其零输入、零状态和全响应。要求
写出每一解的公式的作用,要输出经过整理的结果。
''
二、 实验方案 Matlab代码
close all close all clc
syms t
f =heaviside(t);
% 求通解(待定系数的齐次解与特解)
y = dsolve('D2y+2*Dy+5*y=heaviside(t)'); pretty(y);
% 齐次解
yh = dsolve('D2y+2*Dy+5*y=0'); pretty(yh); % 零输入响应
yzi = dsolve('D2y+2*Dy+5*y=0', 'y(0)=2', 'Dy(0)=-2'); pretty(yzi);
% 零状态响应 ff = f;
yzs = dsolve('D2y+5*Dy+6*y=heaviside(t)', 'y(0)=0', 'Dy(0)=0'); pretty(yzs);
% 全解
y = dsolve('D2y+5*Dy+6*y=heaviside(t)', 'y(0)=2', 'Dy(0)=-2'); pretty(y);
三、实验结果和数据处理
四、结论 : 化简后得
零输入响应:
= 2 cos(2 t)e t
-t
1-3t1-2t1 -e? te3261-3t1-2t1-t全响应:错误!未找到引用源。 = 2 cos(2 t)e+e-e?
326零状态响应:错误!未找到引用源。 =
五、问题与讨论
在Matlab可以使用 dsolve函数进行求导,从而根据求系统响应的公式将各
值求出。需要注意的是在MuPAD引擎下,heaviside无法进行计算,而本机的Matlab版本为R2010b,使用Maple,故正常。
实验题目
2:课本 P204 习题4.18 (5)
f?t???x-12?? 区间默认为[错误!未找到引用源。, 错误!
未找到引用源。]
一、实验目的与要求
通过FS求傅里叶级数的函数,给定原方程、展开项数及范围,调用Matlab
的Figure绘图工具来展示傅里叶方程及原函数方程对比的图像。而通过改变展开项数发现项数越大,傅里叶图像越加接近于原方程。
二、实验方案 Matlab代码:
1、首先先将下面的公式存为FS.m供调用
function [A, B, F] = FS1(f,x,n,a,b) %求傅立叶级数解析解 %输入参数:
% f:给定的待展开函数 % x:自变量 % n:展开项数
% a,b:x的区间(默认值为[-PI,PI] %输出参数:
% A,B:傅立叶系数 % F:傅立叶展开式 if nargin==3 a=-pi; b=pi; end
L=(b-a)/2;
A=int(f,x,-L,L)/L; B=[]; F=A/2; for k=1:n
ak=int(f*cos(k*pi*x/L),x,-L,L)/L; bk=int(f*sin(k*pi*x/L),x,-L,L)/L; A=[A,ak]; B=[B,bk];
F=F+ak*cos(k*pi*x/L)+bk*sin(k*pi*x/L); end
2、课本习题转化为代码
clear all close all clc
syms x f n;
% 原函数
f=heaviside(x*x-1);
% 展开项数为5 n=5;
[A,B,F]=FS1(f,x,n); x=-pi:pi/50:pi;
plot(x,subs(f),x,subs(F)); title('Fourier');
如图1
再将展开项数 n=10
% 展开项数改为10 n=10;
有图2
三、实验结果和数据处理
图1
图2
四、结论 : 可以看出,展开项数越大,图像越精确。
五、问题与讨论
由上述两幅图可知,傅里叶级数用来模拟,或者说是合成任意波形用的,
所以精度和展开项数有关,也就是展开项数越高,拟真效果越好,从图上便可以看出。
实验题目
3:
求函数
f?t???x-12??的傅里叶变换
一、实验目的与要求
通过Matlab中的fourier()函数将原函数转化为傅里叶函数
二、实验方案 Matlab代码:
clear all close all clc
syms x
% 定义原函数
f=sym('heaviside(x^2-1)') % 调用fourier函数 F=fourier(f); % 整理好后输出 pretty(F)
三、实验结果和数据处理
四、结论 :f(t) 错误!未找到引用源。F(jw) =
五、问题与讨论
通过简单地调用Matlab内部的fourier函数可以得到原函数的傅里叶级数,是
个非常使用的函数。
实验题目
4:课本 P266 5.16(1)
描述某LTI连续系统的微分方程为
y?t??3y?t??2y?t??f?t??4f(t)
''''已知输入
f(t)??(t),y?0???1,y?0???3'。求系统的全响应。
一、实验目的与要求
给出微分方程,使用Laplace变换求得原方程,并绘出图像。
二、实验方案 Matlab代码:
clear all close all clc
syms yt ft t s y0 yPie0 Ys Fs; % 初始状态 y0=1; yPie0=3;
% 输入信号
ft=heaviside(t);
% 输入信号拉普拉斯变换的分解因式 Fs=factor(laplace(ft,s));
% 方程的右边,符号表达式
FanChengYouBian=2*diff(sym('f(t)'))+4*sym('f(t)'); % 方程右边的单边拉普拉斯变换
YouBian_Ys=laplace(FanChengYouBian,s)
% 方程的左边,符号表达式
FanChengZuoBian=diff(sym('y(t)'),0)+3*diff(sym('y(t)'))+2*sym('y(t)');
% 方程左边的单边拉普拉斯变换
ZuoBian_Ys=factor(laplace(FanChengZuoBian,s))
% 整个变换方程,方程左边的单边拉普拉斯变换减去右边的z变换式,=0 ZongDeS=ZuoBian_Ys-Fs;
% 解变换方程,然后逆拉普拉斯变换
ZongDeS=subs(ZongDeS,'y(0)',0); ZongDeS=subs(ZongDeS,'D(y)(0)',1);
ZongDeS=subs(ZongDeS,'laplace(y(t), t, s)','Ys') % 解变换方程得y(t)的拉普拉斯变换式 Ys=solve(ZongDeS,Ys) % 逆变换式
yt=ilaplace(Ys) pretty(simple(yt)) ezplot(yt,[0,1])
三、实验结果和数据处理
四、结论 :
错误!未找到引用源。 错误!未找到
引用源。
=
五、问题与讨论
LTI连续系统的数学模型是常系数微分方程,而之前介绍的时域解法过于繁杂,而用拉普拉斯变换求解较为简单直白。 这个例子中,先分别对左右两边求其单边拉普拉斯变换,联立分解后得整个的,后带入初始条件可得零输入与零状态响应,而全响应为二者相加。之后使用拉普
拉斯逆变换ilaplace函数求得全响应。
实验题目
5:课本 P321 习题 6.17(有改动)
描述某LTI连续系统的差分方程为
y?k?2?-0.7y?k?1??0.1y?7f?k?1??2f?k?
已知y(-1) = -4,y(-2) = -38,f(k) = (0.4)?kε(k)。求系统全响应。
一、实验目的与要求
根据差分方程用z域分析方法求原方程。 二、实验方案 Matlab代码:
clear all close all clc
syms yk fk k z yFuYi yFuEr Yz Fz;
% 初始状态 yFuYi=-4; yFuEr=-38; % 输入信号
fk=(0.4)^k*heaviside(k); % 输入信号z变换的分解因式 Fz=factor(ztrans(fk,z));
% 方程右边,符号表达式
FanChengYouBian=sym('f(k)');
% 方程右边的单边z变换
YouBian_Yz=factor(ztrans(FanChengYouBian,z))
% 方程的左边,符号表达式
FanChengZuoBian=sym('y(k+2)')-0.7*sym('y(k+1)')-0.1*sym('y(k)'); % 方程左边的单边z变换
ZuoBian_Yz=factor(ztrans(FanChengZuoBian,z))
% 整个变换方程,方程左边的单边z变换减去右边的z变换式, =0 ZongDeZ=ZuoBian_Yz-Fz;
% 解变换方程,然后逆z变换
ZongDeZ=subs(ZongDeZ,'y(-1)',yFuYi); ZongDeZ=subs(ZongDeZ,'y(-2)',yFuEr);
ZongDeZ=subs(ZongDeZ,'ztrans(y(k), k, z)','Yz'); % 解变换方程得y(k)的z变换式 Yz=solve(ZongDeZ,Yz); % 逆变换式,可得出原方程 yk=iztrans(Yz) pretty(simple(yk))
三、实验结果和数据处理
五、问题与讨论
此例子为通过z变换解差分方程,步骤与前一例子很相似。
同样是先分别求出左右单边z变换式,后带入初始条件得出零输入与零状态响应,二者相加得全响应的z变换形式,使用iztrans函数求z逆变换。
由上两个例子可知,使用laplace变换和z变换求微分及差分方程是最好的实践方法。