用MATLAB仿真离散系统差分方程
差分方程matlab
差分方程matlab差分方程是数学中一个重要的分支,它涉及到离散化方法和离散化技术。
在现代科学和工程中,差分方程有着广泛的应用,可以用来描述很多实际问题的演化过程。
例如,热传导,流体动力学,人口增长等等。
Matlab是一个功能强大的数学计算软件,它可以方便地求解差分方程。
在本文中,我将介绍如何使用Matlab求解差分方程。
首先,我们需要了解什么是差分方程。
差分方程可以看作一种离散化的微分方程,它的解是一组数值序列。
差分方程的一般形式为: y(n+1) = f(n, y(n))其中,y(n)是第n个时刻的解,y(n+1)是第n+1个时刻的解,f(n, y(n))是一个函数,它描述了y(n)时刻解的演化规律。
Matlab中可以使用ode45函数来求解差分方程,具体的用法如下:1.定义一个匿名函数,用于描述差分方程:f = @(t,y) y - t^2 + 1;2.定义差分方程的初始条件:y0 = 0.5;3.定义求解的时间范围:tspan = [0 2];4.调用ode45函数求解差分方程:[t,y] = ode45(f, tspan, y0);5.绘制结果:plot(t,y)上述代码表示求解差分方程y'(t) = y(t) - t^2 + 1,初始条件为y(0) = 0.5,求解时间范围为[0, 2],最后绘制出结果。
如果需要求解其他类型的差分方程,只需要将函数f中的表达式改成相应的形式即可。
总之,使用Matlab求解差分方程非常方便,只需要几行代码就可以实现。
对于那些需要求解大量差分方程的科学家和工程师来说,Matlab无疑是一种非常有价值的工具。
matlab差分方程
matlab差分方程MATLAB是一种广泛使用的计算机辅助工具,其中包含了许多实用算法和解决方案。
差分方程是MATLAB中非常重要的一种工具,可以用于模拟和解决各种差分方程问题。
下面将介绍如何使用MATLAB来解决差分方程问题。
首先在MATLAB窗口中打开一个新的脚本文件(Ctrl+N),左侧显示脚本编辑器的窗口。
在窗口中输入以下内容:function dy = diffeq(t,y)dy = zeros(2,1);dy(1) = y(2);dy(2) = -0.1*y(2) - y(1) - 10*(y(1)^3);在这个脚本中,我们定义了一个名为“diffeq”的函数,它有两个参数(t和y)。
该函数返回一个长度为2的dy向量,dy是y的导数(dy/dt)。
在本例中,我们使用了系统描述的常见方法:x'=f(x,t),y是系统状态向量。
换句话说,我们将梯度设置为我们想要模拟的方程。
一旦函数被定义,我们现在可以开始运行模拟。
接下来,我们将使用MATLAB的ODE求解器来解决我们的差分方程问题。
我们可以这样编写代码:[t,y] = ode45(@diffeq,[0 30],[1 0]);在这里,ode45是MATLAB中用于解决常微分方程的函数,它需要三个参数。
第一个参数是定义我们的方程的函数(即我们之前声明的diffeq函数),第二个参数是我们期望的时间范围(从0到30,单位为秒),第三个参数是初值(在这个例子中,我们使用y(0)=1和y'(0)=0作为初值)。
运行后,MATLAB会将结果存储在两个向量t和y中,我们可以使用下面的代码来显示不同时间点t的y值:plot(t,y(:,1),'-')在此代码中,我们使用plot函数来绘制y的前一个元素(我们的状态向量正在被建模)以及时间t之间的关系。
结果应该是一个类似于与时间的函数y(t)的曲线。
这个值可以根据不同的初值和系统变量被改变。
第三讲MatlabSimulink入门——离散系统仿真实例
第三讲MatlabSimulink ⼊门——离散系统仿真实例第三讲 Matlab/Simulink ⼊门——离散系统仿真实例1、离散系统基本概念1.1 离散系统 离散系统: 是指系统的输⼊和输出仅在离散的时间上取值,⽽且离散的时间具有相同的时间间隔,与连续的概念相反。
设系统输⼊变量为,其中为系统的采样时间,为采样时刻。
由于为⼀固定值,因此系统输⼊,常简记为。
设输出系统为,简记为。
于是,离散系统的数学表达为:1.2线性离散系统 线性离散系统: 是离散系统的⼀种特殊形式,需要同时满⾜(1)、(2)两个条件,即 (1)、齐次性: 对于离散系统,如果对任意的输⼊与给定的常数,下⾯的式⼦总成⽴:则称系统满⾜齐次性。
(2)、叠加性: 对于系统对于输出和,输出分别为 和,总有下⾯的式⼦成⽴:则称系统满⾜叠加性。
对于线性离散系统,其⼀般数学描述为:⽤差分⽅程描述为:状态⽅程:输出⽅程:1.3 Z 变换u (nT ),n =s 0,1,2...T s n T s u (nT )s u (n )y (nT )s y (n )y (n )=f (u (n ),u (n −1),...;y (n −1),y (n −2))T {αu (n )+1βu (n )}=2αT {u (n )}+1βT {u (n )}2y (n )=T {u (n )},n =0,1,2...u (n )αT {αu (n )}=αT {u (n )}u (n )1u (n )2y (n )1y (n )2T {u (n )+1u (n )}=2T {u (n )}+1T {u (n )}2y (n )=f (u (n ),u (n −1),...;y (n −1),y (n −2))x (n +1)=f (x (n ),u (n ),n )y (n )=g (x (n ),u (n ),n ) 变换: 对于⼀个离散信号,其变换为。
⼀般来说离散信号的起始时间往往⼤于零,这时它的变换为,可简记为。
用matlab绘制差分方程Z变换_反变换_zplane_residuez_tf2zp_zp2tf_tf2sos_sos2tf_幅相频谱等等
《数字信号处理》(一) 实验目的使用ztrans,iztrans 函数分别求出离散时间信号的Z 变换和Z 反变换的结果,并用pretty 函数进行结果美化。
编写函数时养成良好的注释习惯,有利于对函数的理解。
复习MATLAB 的基本应用,如:help,可以帮助查询相关的函数的使用方法,巩固理论知识中的离散时间信号的传递函数与二次项式之间的转换,以及使用zplane 函数画出相关系统的零极点分布图,根据零极点的分布情况估计系统的滤波特性。
(二) 程序的运行与截图实验项目一Z 变换(1)求)(])31()21[()(n u n x nn += Z 变换clear all;close all;clc;syms nf=0.5^n+(1/3)^n; %定义离散信号F=ztrans(f) %z 变换pretty(F); 运算结果F(2)4)(n n x = Z 变换clear all ;close all ;clc;syms nf=n^4; %定义离散信号F=ztrans(f) %Z 变换 pretty(F)运算结果(3))sin()(b an n x += Z 变换clear all;close all;clc;syms a b nf = sin(a*n+b) %定义离散信号F=ztrans(f) %Z 变换pretty(F)运算结果实验项目二Z 反变换(1)2)2(2)(-=z z z X Z 反变换 clear all;close all;clc;syms k zFz=2*z/(z-2)^2; %定义Z 反变换表达式fk=iztrans(Fz,k) %Z 反变换pretty(fk);运算结果(2)12)1()(2++-=z z z z z X Z 反变换 clear all;close all;clc;syms k zFz=z*(z-1)/(z^2+2*z+1); %定义Z 反变换表达式fk=iztrans(Fz,k) %Z 反变换pretty(fk);运算结果f(3) 211cos 211)(---+-+=zz z z X ω Z 反变换 clear all;close all;clc;syms k z wFz=(1+z^(-1))/(1-2*z^-1*cos(w)+z^-2); %定义Z 反变换表达式 fk=iztrans(Fz,k) %Z 反变换pretty(fk);运算结果实验项目三各种模型之间的变换2)2)(1(10)(--=z z z z H =4851023-+-z z z z (1)clear all;close all;clc;b=[0 0 10 0];%分子的系数数组a=[1 -5 8 -4]; %分母的系数数组zplane(b,a)% 使用zplane 函数绘制如下系统的零极点分布图 运算结果(2)clear all ;close all ;clc;b=[0 0 10 0]; %分子的系数数组a=[1 -5 8 -4]; %分母的系数数组[r,p,c]=residuez(b,a) %使用matlab 中的residuez 函数,将)(z H 分解成为多个简单有理分式之和运算结果r =-15.00005.000010.0000p =2.00002.00001.0000c =(3)clear all;close all;clc;b=[0 0 10 0]; %分子的系数数组a=[1 -5 8 -4]; %分母的系数数组[z,p,k]=tf2zp(b,a) %使用tf2zp求出系统函数的零、极点和增益运算结果z =p =2.00002.00001.0000k =10(4)clear all;close all;clc;z=[1;-3];%零点,列向量p=[2; -4];%极点,列向量k=5; %增益[b,a] = zp2tf(z,p,k) %根据求出的零、极点和增益,然后自学使用zp2tf还原出分子和分母的系数运算结果(5)clear all ;close all ;clc;b=[0 0 10 0]; %分子的系数数组a=[1 -5 8 -4]; %分母的系数数组[sos,g]=tf2sos(b,a) %使用tf2sos 将系统函数分解成一系列二阶子系统的级联形式运算结果sos =0 1.0000 0 1.0000 -2.0000 0 0 1.0000 0 1.0000 -3.0000 2.0000g =10(6)clear all ;close all ;clc;sos=[0 1.0000 0 1.0000 -2.0000 0; 0 1.0000 0 1.0000 -3.0000 2.0000];g=10;%增益[b,a]=sos2tf(sos,g) %根据求出的一系列二阶子系统,使用sos2tf 还原出)(z H 分子和分母的系数运算结果b =0 0 10 0a =1 -5 8 -4(7)clear all;close all;clc;b=[0 0 10 0]; %分子的系数数组a=[1 -5 8 -4]; %分母的系数数组n=(0:500)*pi/500; %在pi范围内取501个采样点[h,w]=freqz(b,a,n);%求系统的频率响应subplot(2,1,1),plot(n/pi,abs(h));grid %作系统的幅度频响图axis([0,1,1.1*min(abs(h)),1.1*max(abs(h))]);ylabel(‘幅度’);subplot(2,1,2),plot(n/pi,angle(h));grid %作系统的相位频响图axis([0,1,1.1*min(angle(h)),1.1*max(angle(h))]);ylabel(‘相位’);xlabel(‘以pi为单位的频率’);运行结果2221)(232+++++=z z z z z z H (1)clear all ;close all ;clc;b=[0 1 1 1]; %分子的系数数组 a=[1 2 2 2]; %分母的系数数组 zplane(b,a)% 使用zplane 函数绘制如下系统的零极点分布图 运行结果(2)clear all ;close all ;clc;b=[0 1 1 1]; %分子的系数数组 a=[1 2 2 2]; %分母的系数数组[r,p,k]=residuez(b,a) %使用matlab 中的residuez 函数,将)(z H 分解成为多个简单有理分式之和 运行结果r =-0.4006 -0.0497 - 0.1609i -0.0497 + 0.1609ip =-1.5437-0.2282 + 1.1151i-0.2282 - 1.1151ik =0.5000(3)clear all;close all;clc;b=[0 1 1 1]; %分子的系数数组a=[1 2 2 2]; %分母的系数数组[z,p,k]=tf2zp(b,a) %使用tf2zp求出系统函数的零、极点和增益运行结果z =-0.5000 + 0.8660i-0.5000 - 0.8660ip =-1.5437-0.2282 + 1.1151i-0.2282 - 1.1151ik =1(4)clear all ;close all ;clc;z=[-0.5000 + 0.8660i-0.5000 - 0.8660i ];p=[-1.5437-0.2282 + 1.1151i-0.2282 - 1.1151i ];k=1;[b,a]=zp2tf(z,p,k) %根据求出的零、极点和增益,使用zp2tf 还原出)(z H 分子和分母的系数运行结果b =0 1.0000 1.0000 1.0000a =1.00002.0001 2.0001 1.9999(5)clear all;close all;clc;b=[0 1 1 1]; %分子的系数数组a=[1 2 2 2]; %分母的系数数组[sos,g]=tf2sos(b,a) %使用tf2sos将系统函数分解成一系列二阶子系统的级联形式运行结果sos =0 1.0000 0 1.0000 1.5437 01.0000 1.0000 1.0000 1.0000 0.4563 1.2956g =1(6)clear all;close all;clc;sos=[ 0 1.0000 0 1.0000 1.5437 0;1.0000 1.0000 1.0000 1.0000 0.4563 1.2956];g=1;[b,a]=sos2tf(sos,g) %根据求出的一系列二阶子系统,自学使用sos2tf还原出(zH分子和分母的系数)运行结果b =0 1 1 1a =1.00002.0000 2.0000 2.0000(7)clear all;close all;clc;b=[0 1 1 1]; %分子的系数数组a=[1 2 2 2]; %分母的系数数组n=(0:500)*pi/500; %在pi范围内取501个采样点[h,w]=freqz(b,a,n);%求系统的频率响应subplot(2,1,1),plot(n/pi,abs(h));grid %作系统的幅度频响图axis([0,1,1.1*min(abs(h)),1.1*max(abs(h))]);ylabel('幅度');subplot(2,1,2),plot(n/pi,angle(h));grid %作系统的相位频响图axis([0,1,1.1*min(angle(h)),1.1*max(angle(h))]);ylabel('相位');xlabel('以pi为单位的频率');运行结果实验项目四根据零极点分布图估计系统的滤波特性。
如何在Matlab中进行离散系统设计
如何在Matlab中进行离散系统设计离散系统设计在工程领域中扮演着重要的角色。
离散系统指的是使用一系列离散时间点进行操作和观测的系统。
而Matlab作为一种强大的数学软件,提供了丰富的工具和函数来进行离散系统设计。
本文将介绍如何使用Matlab进行离散系统设计,并提供一些实际案例来帮助读者理解和应用这些概念。
一、离散系统和离散系统设计概述离散系统是指系统的状态和输出在离散时间点上进行操作和观测,与连续系统相对应。
离散系统设计的目标是通过对系统进行建模、分析和控制,以实现所需的性能指标。
离散系统设计的基本步骤包括系统建模、性能分析和控制器设计。
系统建模是指将实际系统抽象为数学模型,以方便进行分析和设计。
性能分析是评估系统在不同工况下的性能表现,如稳定性、响应速度等。
控制器设计是根据性能要求设计出合适的控制器,使得系统能够满足需求。
二、Matlab中的离散系统建模在Matlab中,可以使用多种方法进行离散系统的建模。
最常用的方法是差分方程法和状态空间法。
差分方程法是将系统的输入输出关系表示为差分方程的形式,而状态空间法则是使用状态向量和状态方程来描述系统的动态行为。
在使用差分方程法进行建模时,可以使用Matlab中的函数tf或zpk来创建传递函数模型。
传递函数模型是用来描述系统输入和输出之间的关系的一种数学表达式。
例如,通过以下代码可以创建一个二阶传递函数模型:```matlabnum = [1, 0.5];den = [1, -0.6, 0.08];sys = tf(num, den, 1);```在使用状态空间法进行建模时,可以使用Matlab中的函数ss来创建状态空间模型。
状态空间模型是使用状态向量和状态方程来描述系统的动态行为的一种数学表达式。
例如,通过以下代码可以创建一个二阶状态空间模型:```matlabA = [0, 1; -0.08, 0.6];B = [0; 1];C = [1, 0.5];D = 0;sys = ss(A, B, C, D, 1);```三、离散系统性能分析离散系统的性能分析是评估系统在不同工况下的性能表现,如稳定性、响应速度等。
实验二 基于Matlab的离散控制系统仿真---已完成
实验二基于Matlab的离散控制系统仿真一、实验目的1)学习使用Matlab命令对离散控制系统进行仿真的方法。
2)学习使用Simulink工具箱对离散控制系统进行仿真的方法。
二、实验原理1. 控制系统命令行仿真一阶系统闭环传递函数为3()G ss+3请转换为离散系统脉冲传递函数并仿真。
根据要求实验有实验数据和所得图形如下:连续零极点图函数:离散函数零极点图:连续函数根轨迹图:离散函数根轨迹图:连续函数单位脉冲响应曲线:离散函数单位脉冲响应曲线:连续函数单位阶跃响应:离散函数单位阶跃响应:连续函数波特图:离散函数波特图:连续函数艾奎斯特曲线:离散函数艾奎斯特曲线:连续函数尼科尔斯曲线:离散函数尼科尔斯曲线:2. 控制系统simulink 仿真按图建立系统的Simulink 模型,对不同的输入信号进行仿真,改变参数,观察不同的仿真结果。
图1 控制系统Simulink 仿真图解答于实验内容第二问三、实验内容1) 二阶系统传递函数为225()4+25G s s s =+,请转换为零极点模型,离散系统模型(采样时间为1),以及离散零极点模型,并进行基于matlab 命令的仿真研究(求连续和离散系统的单位脉冲响应、单位阶跃响应、零极点分布图、根轨迹、波特图、奈奎斯特曲线、尼科尓斯曲线等)。
根据题意实验所得有:连续单位脉冲响应连续单位阶跃响应连续零极点分布图离散零极点分布图连续根轨迹连续波特图连续奈奎斯特曲线连续尼科尓斯曲线2)按图1建立系统的Simulink模型,对不同的输入信号进行仿真。
改变模型参数,观察不同的仿真结果。
Step输入:Ramp输入:当函数分子分别为1,10,100,500时有:经过实验可以看出分子越大超调越大,调整时间越大。
3)将上述系统离散化并基于Simulink仿真,观察仿真结果。
根据题意实验有:Step输入:Ramp输入:分子为1时:Step输入:Ramp输入:分子为250时:Step输入:Ramp输入:四、实验报告1)按照实验报告所要求的统一格式,填写实验报告;2)记录实验过程、实验结果和图表。
基于 Matlab 的离散控制系统仿真
2014 / 2015 学年第 1 学期计算机控制技术实验报告班级学号 ********** 学生姓名蔡梦指导教师张坤鳌实验二 基于 Matlab 的离散控制系统仿真一、 实验目的和要求:1、 学习使用 Matlab 的命令对控制系统进行仿真的方法2、 学习使用 Matlab 中的 Simulink 工具箱进行系统仿真的方法二、 实验环境X86系列兼容型计算机,Matlab 软件三、 实验原理1、控制系统命令行仿真1)建立如图所示一阶系统控制模型并进行系统仿真:一阶系统闭环传递函数为G (S )=s s 313+=33+s ,转换为离散系统脉冲传递函数并仿真。
2)建立如图所示二阶系统控制模型并进行系统仿真:二阶系统闭环传递函数为G (S )=)54.02(51)54.02(522**++**+s s s s =222554.025+**+s s ,转换为离散系统脉冲传递函数并仿真,改变参数,观察不同的系统的仿真结果。
2、控制系统的 Simulink 仿真按图建立系统的 Simulink 模型,对不同的输入信号进行仿真,改变参数,观察不同的仿真结果。
将上述系统离散化并仿真,观察仿真结果四、 实验步骤1、根据实验原理对控制系统进行软件仿真2、观察记录输出的结果,与理论计算值相比较3、自行选择参数,练习仿真方法,观察不同的仿真结果二阶系统闭环传递函数为G (S )=)54.02(51)54.02(522**++**+s s s s )54.02(51)54.02(522**++**+=s s s s 进行软件仿真如下图:分别进行离散仿真:五、实验心得针对这次实验设计,我通过各种渠道,上课认真学习,请教老师、上网搜索,图书馆查阅,询问同学等学习到了很多知识,一步步了解最少拍控制系统设计,锻炼了自我学习能力。
尽管学习上遇到了很多困难,结果也差强人意。
但我们在不断处理困难的过程中磨练了处理事物的能力和耐心,也让同学间学会了互相学习,共享资源。
离散系统Matlab仿真
G1 (s)
s
1
1,G2
(
s)
s
1
, 2
采样周期T=1s,求该系统的脉冲传递函数G(z)。
G1=tf(1,[1 1]); G2=tf(1,[1 2]); G=G1*G2 Gd=c2d(G,1, 'imp')
14
2、闭环离散系统
例:闭环采样系统结构如图所示,其中
G(s) 1
H (s) 1
s(s 1)
20
例:闭环采样=1s,试求其单位阶跃响应。
sys=tf(1,[1 1 0]); sysd=c2d(sysc,1, 'zoh'); closysd=feedback(sysd,1); [num,den]=tfdata(closysd) dstep (num,den,25 )
25
Ts=1; dtime=(0:Ts:50) ; R1=dtime; R2=0.5*dtime.*dtime; subplot(2,1,1);dlsim(num,den,R1) subplot(2,1,2); dlsim(num,den,R2)
26
例:闭环采样系统结构如图所示,其中 G(s) 1
试用MATLAB创建系统的数学模型。
num=[0.01 0.03 -0.07]; den=[1 -2.7 2.42 -0.72]; G=filt(num,den) printsys (num, den, 'z')
5
二、数学模型旳互相转换
这两种数学模型之间是可以互相转换旳,其调用格式分别为: tf (sys) ——将零极点增益模型转换成传递函数模型; zpk (sys)——将传递函数模型转换成零极点增益模型。
MATLAB中的差分方程建模与求解方法
MATLAB中的差分方程建模与求解方法引言差分方程是数学中常见的一种方程类型,是一种离散形式的微分方程。
在实际问题中,差分方程能够提供对系统的离散描述,对于动态模型的建立和求解具有重要作用。
MATLAB作为一种功能强大的数值计算软件,其内置了丰富的工具箱和函数,为差分方程的建模和求解提供了便利。
一、差分方程的建模差分方程的建模是将实际问题转化为数学方程的过程。
在MATLAB中,差分方程的建模可以通过定义离散系统的状态和状态转移方程来实现。
下面以一个简单的例子说明差分方程的建模过程。
假设有一个人口增长模型,人口数在每年增加10%,则差分方程可以表示为:P(n+1) = P(n) + 0.1 * P(n),其中P(n)表示第n年的人口数,P(n+1)表示第n+1年的人口数。
在MATLAB中,可以通过定义一个函数来描述差分方程的状态转移方程,代码如下:```matlabfunction Pn = population_growth(Pn_minus_1)growth_rate = 0.1;Pn = Pn_minus_1 + growth_rate * Pn_minus_1;end```上述代码定义了一个名为"population_growth"的函数,该函数的输入参数为上一年的人口数"Pn_minus_1",输出为当前年的人口数"Pn"。
其中,growth_rate表示人口增长率,根据差分方程的定义,将上一年的人口数乘以增长率再加上本身,即可得到当前年的人口数。
二、差分方程的求解方法在MATLAB中,差分方程的求解可以通过多种方法实现。
下面介绍两种常用的差分方程求解方法:欧拉法和四阶龙格-库塔法。
1. 欧拉法(Euler's method)欧拉法是差分方程求解中最简单直观的一种方法。
其基本思想是通过离散化的方式逐步逼近连续函数的解。
具体步骤如下:1) 将时间段分割成若干个小区间;2) 根据差分方程的状态转移方程,在每个小区间内进行计算;3) 迭代计算直到达到指定的时间点。
用matlab求解差分方程
Xk-1决定的部分是 a1bcXk-1,由Xk-2决定的部分是 a2b(1-a1)bcXk-2 Xk= a1bcXk-1 + a2b(1-a1)bcXk-2
Xk= a1bcXk-1 + a2b(1-a1)bcXk-2
实际上,就是Xk= pXk-1 + qXk-2 我们需 要知道x0,a1,a2,c, 考察b不同时,种子繁 殖的情况。在这里假设 X0=100,a1=0.5,a2=0.25,c=10,b=0.18~0.20 这样可以用matlab计算了
500
400
300
200
100
0
0
1
2
3
4
5
6
7
8
9
10
按年龄分组的种群增长
野生或饲养的动物因繁殖而增加,因自然死亡 和人为屠杀而减少,不同年龄动物的繁殖率, 死亡率有较大差别,因此在研究某一种群数量 的变化时,需要考虑年龄分组的种群增长。 将种群按年龄等间隔的分成若干个年龄组,时 间也离散化为时段,给定各年龄组种群的繁殖 率和死亡率,建立按年龄分组的种群增长模型, 预测未来各年龄组的种群数量,并讨论时间充 分长以后的变化趋势。
Matlab求解差分方程问题 用Matlab求解差分方程问题
实验一 基于matlab语言的线性离散系统的z变换分析法1(1)
实验一基于MATLAB语言的线性离散系统的Z变换分析法一、实验目的1. 学习并掌握 Matlab 语言离散时间系统模型建立方法;2.学习离散传递函数的留数分析与编程实现的方法;3.学习并掌握脉冲和阶跃响应的编程方法;4.理解与分析离散传递函数不同极点的时间响应特点。
二、实验工具1. MATLAB 软件(6.5 以上版本);2. 每人计算机一台。
三、实验内容1. 在Matlab语言平台上,通过给定的离散时间系统差分方程,理解课程中Z变换定义,掌握信号与线性系统模型之间Z传递函数的几种形式表示方法;2. 学习语言编程中的Z变换传递函数如何计算与显示相应的离散点序列的操作与实现的方法,深刻理解课程中Z变换的逆变换;3. 通过编程,掌握传递函数的极点与留数的计算方法,加深理解G(z)/z 的分式方法实现过程;4. 通过系统的脉冲响应编程实现,理解输出响应的离散点序列的本质,即逆变换的实现过程;5. 通过编程分析,理解系统的Z传递函数等于单位脉冲响应的Z变换,并完成响应的脉冲离散序列点的计算;6. 通过程序设计,理解课程中脉冲传递函数极点对系统动态行为的影响,如单独极点、复极点对响应的影响。
四、实验步骤1.创建系统How to create digital system g Four examples are as follows:numg=[0.1 0.03 -0.07];deng=[1 -2.7 2.42 -0.72];g=tf(numg,deng,-1)get(g);[nn dd]=tfdata(g,'v')[zz,pp,kk]=zpkdata(g,'v')Unite circle region with distrbuting zeros points and poles points hold onpzmap(g), hold offaxis equal运行结果:2.转换为零极点标准形式Convert from tf(z-function) to zpk(z-function) Part C exercise form gg=zpk(g)[zz,pp,kk tts]=zpkdata(gg,'v')[z,p k,ts]=zpkdata(g,'v')运行结果:3.四个例子Four examples are as follows:Part A exerciseeg1mun=[1.25 -1.25,0.30];eg1den=[1 -1.05 0.80 -0.10];eg1=tf(eg1mun,eg1den,-1);eg1zpk=zpk(eg1);[zz1,pp1,kk1,tts1]=zpkdata(eg1zpk,'v');Part B exerciseeg2mun=[0.84 -0.062 -0.156 0.058];eg2den=[1 -1.03 0.22 0.094 0.05];eg2=tf(eg2mun,eg2den,-1);eg2zpk=zpk(eg2);[zz2,pp2,kk2,tts2]=zpkdata(eg2zpk,'v');Part C exercisezz3=[-0.2 0.4];pp3=[0.6 0.5+0.75i 0.5-0.75i 0.3];kk3=150;tts3=-1;eg3zpk=zpk(zz3,pp3,kk3,tts3);eg3=tf(eg3zpk);Part D exercisezz4=[-0.3 0.4+0.2i 0.4-0.2i];pp4=[-0.6 -0.3,0.5 0.6];kk4=5;tts4=-1;eg4zpk=zpk(zz4,pp4,kk4,tts4);eg4=tf(eg4zpk);4.留数法Residue method and impluse response numg=[2 -2.2 0.65];deng=[1 -0.6728 0.0463 0.4860]; [rGoz, pGoz,other]=residue(numg,[deng 0]) [mag_pGoz,theta_pGoz] =xy2p(pGoz)[mag-rGoz,theta-rGoz]=xy2p(rGoz)G=tf(numg,deng,-1)impulse(G)[y,k]=impulse(G);stem(k,y,'filled');impulse(G)运行结果:5.复杂极点响应When transfer function is G(Z) with complex ,t=t*ts;pole of z=e^(+-j*30*pi/3) and z=-0.5,as well as its gain value is unit step signal,its collecting cycle is 0.5 second,how to analyze its response.gcfts=0.3;num=[1 0.5];den=conv([1 -exp(i*pi/3)],[1 -exp(-i*pi/3)]);g1=tf(num,den,ts)[y,k]=impulse(g1,20);stem(k,y,'filled'),grid运行结果:6.重极点响应How to analyze response with repeating poles dtime=[0:90];y(k+2)-1.8y(k+1)+0.81y(k)=3u(k+1)-1.2u(k) yi=impulse(gstep,dtime)gcfnum=[3 -1.2];den=[1 -1.8 0.81];[rGoz, pGoz,other]=residue(num,[den 0])t=0:60;y=rGoz(2,1).*(t.*(pGoz(2,1).^(t-1)))+rGoz(1,1).*(pGoz(1,1).^(t)) y1=zeros(1,61);y1(1,1)=rGoz(3,1);y=y+y1;t=ts*t;stem(t,y,'filled'),gridSpecial example about difference real pole tosystem response[rGoz,pGoz,other]=residue(num,[den,0])num1=[rGoz(1) 0];den1=[1 -pGoz(1)]gg1=tf(num1,den1,ts)[y,t]=impulse(gg1,50)stem(t,y,'filled'),grid运行结果:7.阶跃响应numg=[2 -2.2 0.56];deng=[1 -0.6728 0.0463 0.4860];g=tf(numg,deng,1);numgstep=[numg 0];dengstep=conv(deng,[1 -1]);gstep=tf(numgstep,dengstep,1)dtime=[0:90];yi=impulse(gstep,dtime)subplot(2,1,1)stem(dtime,yi,'filled')ys=step(g,dtime);subplot(2,1,2)stem(dtime,ys,'filled')dcgain(g)ys_ss=ys(end)ys_ss=ys(max(dtime))运行结果:Example 1: Analysis of subsection input function subplot(1,1,1)num=[2 -2.2 0.56];den=[1 -0.6728 0.0463 0.4860];ts=0.2;g=tf(num,den,ts);dtime=[0:ts:8]';u=2.0*ones(size(dtime));ii=find(dtime>=2.0); u(ii)=0.5;y=lsim(g,u,dtime);stem(dtime,y,'filled'),gridhold onplot(dtime,u,'o')hold offtext(2.3,-1.8,'output')text(1.6,2.3,'input')运行结果:五、实验思考1、根据实验结果,分析离散传递函数不同极点的时间响应特点。
用MATLAB仿真离散系统差分方程
HEFEI UNIVERSITY信号与系统项目设计报告系别电子信息与电子工程系题目项目第十题专业电子信息工程班级 11电子信息工程(2)班小组成员钟文俊(1105012012)谢伟明(1105012041)授课老师纪平完成时间 2014.01.02用MATLAB仿真离散系统差分方程一、设计题目-nf-+-nnnyyn=yf(-()2)()1(5.0.0)25()1+系统输入序列为)f nε=。
n(n)5.0()(二、设计要求1、试用MATLAB绘出输入序列的时域波形;2、用MATLAB求出该系统0~20区间的样值;3、用MATLAB画出系统的零状态响应波形。
三、功能分析差分方程反映的是关于离散变量的取值与变化规律。
通过建立一个或几个离散变量取值所满足的平衡关系,从而建立差分方程。
差分方程就是针对要解决的目标,引路系统或过程中的离散变量,根据实际背景的规律、性质、平衡关系,建立离散变量所满足的平衡关系等式,从而建立差分方程。
通过求出和分析方程的解,或者分析得到方程解的特别性质(平衡性、稳定性、渐近性、振动性周期性等),从而把握这个离散变量的变化过程的规律,进步再结合其他分析,得到原问题的解。
四、设计原理分析1、差分方程定义含有未知函数yt=f(t)以及yt的差分Dyt, D2yt,…的函数方程,称为常差分方程(简称差分方程);出现在差分方程中的差分的最高阶数,称为差分方程的阶。
n阶差分方程的一般形式为F(t,yt,Dyt,…, Dnyt)=0,其中F是t,yt, Dyt,…, Dnyt的已知函数,且Dnyt一定要在方程中出现。
含有两个或两个以上函数值yt,yt+1,…的函数方程,称为(常)差分方程,出现在差分方程中未知函数下标的最大差,称为差分方程的阶。
n阶差分方程的一般形式为F(t,yt,yt+1,…,yt+n)=0,其中F为t,yt,yt+1,…,yt+n的已知函数,且yt和yt+n一定要在差分方程中出现。
差分方程的解法分析及MATLAB实现(程序)
差分方程的解法分析及MATLAB 实现(程序)摘自:张登奇,彭仕玉.差分方程的解法分析及其MATLAB 实现[J]. 湖南理工学院学报.2014(03) 引言线性常系数差分方程是描述线性时不变离散时间系统的数学模型,求解差分方程是分析离散时间系统的重要内容.在《信号与系统》课程中介绍的求解方法主要有迭代法、时域经典法、双零法和变换域法[1].1 迭代法例1 已知离散系统的差分方程为)1(31)()2(81)1(43)(-+=-+--n x n x n y n y n y ,激励信号为)()43()(n u n x n =,初始状态为21)2(4)1(=-=-y y ,.求系统响应. 根据激励信号和初始状态,手工依次迭代可算出2459)1(,25)0(==y y . 利用MATLAB 中的filter 函数实现迭代过程的m 程序如下:clc;clear;format compact;a=[1,-3/4,1/8],b=[1,1/3,0], %输入差分方程系数向量,不足补0对齐n=0:10;xn=(3/4).^n, %输入激励信号zx=[0,0],zy=[4,12], %输入初始状态zi=filtic(b,a,zy,zx),%计算等效初始条件[yn,zf]=filter(b,a,xn,zi),%迭代计算输出和后段等效初始条件2 时域经典法用时域经典法求解差分方程:先求齐次解;再将激励信号代入方程右端化简得自由项,根据自由项形式求特解;然后根据边界条件求完全解[3].用时域经典法求解例1的基本步骤如下.(1)求齐次解.特征方程为081432=+-αα,可算出41 , 2121==αα.高阶特征根可用MATLAB 的roots 函数计算.齐次解为. 0 , )41()21()(21≥+=n C C n y n n h (2)求方程的特解.将)()43()(n u n x n =代入差分方程右端得自由项为 ⎪⎩⎪⎨⎧≥⋅==-⋅+-1,)43(9130 ,1)1()43(31)()43(1n n n u n u n n n 当1≥n 时,特解可设为n p D n y )43()(=,代入差分方程求得213=D . (3)利用边界条件求完全解.当n =0时迭代求出25)0(=y ,当n ≥1时,完全解的形式为 ,)43(213 )41()21()(21n n n C C n y ⋅++=选择求完全解系数的边界条件可参考文[4]选)1(),0(-y y .根据边界条件求得35,31721=-=C C .注意完全解的表达式只适于特解成立的n 取值范围,其他点要用)(n δ及其延迟表示,如果其值符合表达式则可合并处理.差分方程的完全解为)(])43(213 )41(35)21(317[)1(])43(213 )41(35)21(317[)(25)(n u n u n n y n n n n n n ⋅+⋅+⋅-=-⋅+⋅+⋅-+=δ MATLAB 没有专用的差分方程求解函数,但可调用maple 符号运算工具箱中的rsolve 函数实现[5],格式为y=maple('rsolve({equs, inis},y(n))'),其中:equs 为差分方程表达式, inis 为边界条件,y(n)为差分方程中的输出函数式.rsolve 的其他格式可通过mhelp rsolve 命令了解.在MATLAB 中用时域经典法求解例1中的全响应和单位样值响应的程序如下.clc;clear;format compact;yn=maple('rsolve({y(n)-3/4*y(n-1)+1/8*y(n-2)=(3/4)^n+1/3*(3/4)^(n-1),y(0)=5/2,y(-1)=4},y(n))'),hn=maple('rsolve({y(n)-3/4*y(n-1)+1/8*y(n-2)=0,y(0)=1,y(1)=13/12},y(n))'),3 双零法根据双零响应的定义,按时域经典法的求解步骤可分别求出零输入响应和零状态响应.理解了双零法的求解原理和步骤,实际计算可调用rsolve 函数实现.yzi=maple('rsolve({y(n)-3/4*y(n-1)+1/8*y(n-2)=0,y(-1)=4, y(-2)=12},y(n))'),yzs=maple('rsolve({y(n)-3/4*y(n-1)+1/8*y(n-2)=(3/4)^n+1/3*(3/4)^(n-1),y(0)=1,y(-1)=0},y(n))'),4 变换域法设差分方程的一般形式为)()(00r n x b k n y a r Mr k N k -=-∑∑==.对差分方程两边取单边z 变换,并利用z 变换的位移公式得])()([])()([1010m r m r r M r l k l k k N k z m x z X z b z l y z Y z a ---=-=---=-=∑∑∑∑+=+整理成)()()()()()(00z X z X z B z Y z Y z A +=+形式有. )(, )(110110M M N N z b z b b z B z a z a a z A ----+++=+++=. )()(, )()(110110∑∑∑∑=--=--=--=--==M r r m m r r N k k l l k k z m x b s X zl y a s Y可以看出,由差分方程可直接写出 )(z A 和 )(z B ,系统函数)(/)()(z A z B z H =,将系统函数进行逆z 变换可得单位样值响应.由差分方程的初始状态可算出 )(0z Y ,由激励信号的初始状态可算出 )(0z X ,将激励信号进行z 变换可得 )(z X ,求解z 域代数方程可得输出信号的象函数 , )()()()()()(00z A z Y z X z X z B z Y -+= 对输出象函数进行逆z 变换可得输出信号的原函数)(n y .利用z 变换求解差分方程各响应的步骤可归纳如下:(1)根据差分方程直接写出 )(z A 、 )(z B 和)(z H ,)(z H 的逆变换即为单位样值响应;(2)根据激励信号算出 )(z X ,如激励不是因果序列则还要算出前M 个初始状态值;(3)根据差分方程的初始状态 )(, ),2( ),1(N y y y -⋅⋅⋅--和激励信号的初始状态 )(, ),2( ),1(M x x x -⋅⋅⋅--算出 )(0z Y 和 )(0z X ;(4)在z 域求解代数方程)()()()()()(00z X z X z B z Y z Y z A +=+得输出象函数 )(z Y , )(z Y 的逆变换即为全响应;(5)分析响应象函数的极点来源及在z 平面中的位置,确定自由响应与强迫响应,或瞬态响应与稳态响应;(6)根据零输入响应和零状态响应的定义,在z 域求解双零响应的象函数,对双零响应的象函数进行逆z 变换,得零输入响应和零状态响应.用变换域法求解例1的基本过程如下. 根据差分方程直接写出2181431 )(--+-=z z z A ,1311 )(-+=z z B .系统函数的极点为41,21. 对激励信号进行z 变换得)43/( )(-=z z z X .激励象函数的极点为3/4. 根据差分方程的初始状态算出102123 )(-+-=z z Y .根据激励信号的初始状态算出 0)(0=z X . 对z 域代数方程求解,得全响应的象函数)323161123/()83243125( )(2323-+-+-=z z z z z z z Y . 进行逆z 变换得全响应为)(])43(213 )41(35)21(317[)(n u n y n n n ⋅+⋅+⋅-= 其中,与系统函数的极点对应的是自由响应;与激励象函数的极点对应的是强迫响应. )(z Y 的极点都在z 平面的单位圆内故都是瞬态响应.零输入响应和零状态响应可按定义参照求解.上述求解过程可借助MATLAB 的符号运算编程实现.实现变换域法求解差分方程的m 程序如下: clc;clear;format compact;syms z n %定义符号对象% 输入差分方程、初始状态和激励信号%a=[1,-3/4,1/8],b=[1,1/3], %输入差分方程系数向量y0=[4,12],x0=[0], %输入初始状态,长度分别比a 、b 短1,长度为0时用[]xn=(3/4)^n, %输入激励信号,自动单边处理,u(n)可用1^n 表示% 下面是变换域法求解差分方程的通用程序,极点为有理数时有解析式输出 %N=length(a)-1;M=length(b)-1;%计算长度Az=poly2sym(a,'z')/z^N;Bz=poly2sym(b,'z')/z^M;%计算A(z)和B(z)Hz=Bz/Az;disp('系统函数H(z):'),sys=filt(b,a),%计算并显示系统函数hn=iztrans(Hz);disp('单位样值响应h(n)='),pretty(hn),%计算并显示单位样值响应Hzp=roots(a);disp('系统极点:');Hzp,%计算并显示系统极点Xz=ztrans(xn);disp('激励象函数X(z)='),pretty(Xz),%激励信号的单边z 变换Y0z=0;%初始化Y0(z),求Y0(z)注意系数标号与变量下标的关系for k=1:N;for l=-k:-1;Y0z = Y0z+a(k+1)*y0(-l)*z^(-k-l);endenddisp('初始Y0(z)'),Y0z,%系统初始状态的z 变换X0z=0;%初始化X0(z),求X0(z)注意系数标号与变量下标的关系for r=1:M;for m=-r:-1;X0z = X0z+b(r+1)*x0(-m)*z^(-r-m);endenddisp('初始X0(z)'),X0z,%激励信号起始状态的z 变换Yz=(Bz*Xz+X0z-Y0z)/Az;disp('全响应的z 变换Y(z)'),pretty(simple(Yz)),yn=iztrans(Yz);disp('全响应y(n)='),pretty(yn),% 计算并显示全响应Yziz=-Y0z/Az;disp('零输入象函数Yzi(z)='),pretty(Yziz),%零激励响应的z 变换yzin=iztrans(Yziz);disp('零输入响应yzi(n)='),pretty(yzin),% 计算并显示零输入响应 Yzsz=(Bz*Xz+X0z)/Az;disp('零状态象函数Yzs(z)='),pretty(Yzsz),%零状态响应的z 变换yzsn=iztrans(Yzsz);disp('零状态响应yzs(n)='),pretty(yzsn),% 计算并显示零状态响应该程序的运行过程与手算过程对应,显示在命令窗的运行结果与手算结果相同.。
差分方程及matlab求解.
程中出现.
定义3′ 含有两个或两个以上函数值yt,yt+1,…的函数方 程,称为(常)差分方程,出现在差分方程中未知函数下 标的最大差,称为差分方程的阶. n阶差分方程的一般形式为
F(t,yt,yt+1,…,yt+n)=0,
其中F为t,yt,yt+1,…,yt+n的已知函数 ,且yt和yt+n一定要 在差分方程中出现.
其中A1,A2,…,An为n个任意(独立)常数.
定理4(非齐次线性差分方程通解结构定理) 如果 y (t)是非齐次线性方程yt+n+a1(t)yt+n-1+a2(t)yt+n-2
+…+an-1(t)yt+1+an(t)yt=f(t)的一个特解,yA(t)是其对应的齐
次线性方程 yt+n+a1yt+n-1 +a2yt+n-2 +…+an-1yt+1+anyt=0 的通
解,那么,非齐次线性差分方程的通解为: y(t)=yA(t)+ y (t)
即
y(t)=A1y1(t)+A2y2(t)+…+Anyn(t)+ y(t), 这里A1,A2,…,An为n个任意(独立)常数.
第二节 一阶常系数线性差分方程
一阶常系数线性差分方程的一般形式为 yt+1+ayt=f(t) 和 yt+1+ayt=0, 其中 f(t) 为 t 的已知函数 ,a≠0 为常数 .分别称为一阶常 系数非齐次线性差分方程和其对应的齐次差分方程.
试以特解 yt =a+bt,(a,b为待定系数)代入方程得
实验2离散序列的卷积和系统差分方程的MATLAB实现示
信息工程学院实验报告课程名称:数字信号处理实验项目名称:实验2 离散序列的卷积和系统差分方程的MATLAB 实现示 实验时间: 班级: 姓名: 学号:一、实 验 目 的:熟悉序列的卷积运算及其MATLAB 实现;熟悉离散序列的傅里叶变换理论及其MATLAB 实现;加深对离散系统的差分方程和系统频率响应的理解。
二、实 验 设 备 与 器 件MATLAB 2008软件三、实 验 原 理3.1离散序列卷积运算的MATLAB 实现两序列的线性卷积定义为:()*()()()k x n y n x k y n k ∞=-∞=-∑MATLAB 提供了一个内部函数conv(x,h)来计算两个有限长序列之间的卷积。
3.2离散系统差分方程的MATLAB 求解方法对于时域离散系统,可用差分方程描述或研究输入、输出之间的关系。
对于线性时不变系统,经常用的是线性常系数差分方程。
一个N 阶线性常系数差分方程用下式表示:()()N Miii i b y n i a x n i ==-=-∑∑当0,1,2,,i b i N ==时,[]h n 是有限长度的,称系统为FIR 系统;反之,称系统为IIR 系统。
在MATLAB 中,可以用函数filter(a,b,x)求解差分方程,其中参数a,b 分别系统函数的分子和分母多项式的系数。
四、实 验 内 容 与 结 果 分 析4.1已知1(){1,1,1,1,1}x n =,2(){1,1,1,1,1,1,1}x n =,计算12()()*()y n x n x n =。
指令语句如下:N=5;M=7;L=N+M-1;x1=[1,1,1,1,1]; nx1 =0:N-1; x2=[1,1,1,1,1,1,1]; nx2=0:M-1; y=conv(x1,x2); ny=0:L-1;subplot(1,3,1);stem(nx1,nx1,'.');xlabel('n');ylabel('x1(n)');grid on;subplot(1,3,2);stem(nx2,nx2,'.');xlabel('n');ylabel('x2(n)');grid on; subplot(1,3,3);stem(ny,y,'.');xlabel('n');ylabel('y(n)');grid on;执行结果如图4-1所示:图4-14.2 求系统:()0.5((1)(2)(3)(4))y n x n x n x n x n =-+-+-+-的单位冲激响应和阶跃响应。
用matlab求解差分方程
01
单击此处添加正文,文字是您思想的提炼,请尽量言简意赅地阐述观点。
自然环境下,b=0
02
单击此处添加正文,文字是您思想的提炼,请尽量言简意赅地阐述观点。
人工孵化条件下
03
差分方程的平衡点
令xk=xk+1=x得
04
单击此处添加正文,文字是您思想的提炼,请尽量言简意赅地阐述观点。
添加标题
X(k)=p*(xk-1)+q*(xk-2);
添加标题
end
K=(0:20)’; Y1=zwfz(100,21,0.18); Y2=zwfz(100,21,0.19); Y3=zwfz(100,21,0,20); Round([k,y1’,y2’,y3’]) Plot(k,y1,k,y2,’:’,k,y3,’o’), Gtext(‘b=0.18’),gtext(‘b=0.19’),gtext(‘b=0.20’)
plot(k,y2,':') >> plot(k,y2,'--') >> plot(k,y2,'r') >> plot(k,y2,'y') >> plot(k,y2,'y',k,y1,':') >> plot(k,y2,k,y1,':') >> plot(k,y2,'oy',k,y1,':') 用gtext(‘r=0.0194’),gtext(‘r=-0.0324’),gtext(‘r=-0.0382’)在图上做标记。
可以看到时间充分长以后3个城市汽车数量趋于180,300,120 可以考察这个结果与初始条件是否有关 若最开始600辆汽车都在A市,可以看到变化时间充分长以后,各城市汽车数量趋于稳定,与初始值无关
求解差分方程系统函数Matlab,实验二差分方程求解与离散系统频率响应描述.doc...
求解差分⽅程系统函数Matlab,实验⼆差分⽅程求解与离散系统频率响应描述.doc...实验⼆差分⽅程求解与离散系统频率响应描述实验⼆ 差分⽅程的求解和离散系统频率响应的描述实验⽬的掌握⽤MATLAB求解差分⽅程的⽅法。
掌握绘制系统的零极点分布图和系统的频率响应特性曲线的⽅法。
观察给定系统的冲激响应、阶跃相应以及系统的幅频特性和相频特性实验内容已知描述离散新天地差分⽅程为:y(n+2)-0,25y(n+1)+0.5y(n)=x(n)+x(n-1),且知该系统输⼊序列为,试⽤MATLAB实现下列分析过程:画出输⼊序列的时序波形;求出系统零状态响应在0~20区间的样值;画出系统的零状态响应波形图。
⼀离散时间系统的系统函数:,试⽤MATLAB求出系统的零极点;绘出系统的零极点分布图;绘出响应的单位阶跃响应波形。
实验报告要求求出各部分的理论计算值, 并与实验结果相⽐较。
绘出实验结果波形(或曲线),并进⾏分析。
写出实验⼼得。
附录:本实验中所要⽤到的MATLAB命令1、系统函数H(z)在MATLAB中可调⽤函数zplane(),画出零极点分布图。
调⽤格式为: zplane(b,a) 其中a为H(z)分母的系数矩阵,b为H(z)分⼦的系数矩阵。
例2-1:⼀个因果系统:y(n)-0.8y(n-1)=x(n)由差分⽅程可求系统函数零极点分布图程序:b=[1,0];a=[1,-0.8];zplane(b,a)2、求解差分⽅程在MATLAB中,已知差分⽅程的系数、输⼊、初始条件,调⽤filter()函数解差分⽅程。
调⽤filter()函数的格式为:y=filtier(b,a,x,xic),参数x为输⼊向量(序列),b,a分别为(1-30)式中的差分⽅程系数,xic是等效初始状态输⼊数组(序列)。
确定等效初始状态输⼊数组xic(n),可使⽤Signal Processing toolbox中的filtic()函数,调⽤格式为:y=filtic(b,a,y,x) 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HEFEI UNIVERSITY信号与系统项目设计报告系别电子信息与电子工程系题目项目第十题专业电子信息工程班级 11电子信息工程(2)班小组成员钟文俊(1105012012)谢伟明(1105012041)授课老师纪平完成时间 2014.01.02用MATLAB仿真离散系统差分方程一、设计题目-nf-+-nnnyyn=yf(-()2)()1(5.0.0)25()1+系统输入序列为)f nε=。
n(n)5.0()(二、设计要求1、试用MATLAB绘出输入序列的时域波形;2、用MATLAB求出该系统0~20区间的样值;3、用MATLAB画出系统的零状态响应波形。
三、功能分析差分方程反映的是关于离散变量的取值与变化规律。
通过建立一个或几个离散变量取值所满足的平衡关系,从而建立差分方程。
差分方程就是针对要解决的目标,引路系统或过程中的离散变量,根据实际背景的规律、性质、平衡关系,建立离散变量所满足的平衡关系等式,从而建立差分方程。
通过求出和分析方程的解,或者分析得到方程解的特别性质(平衡性、稳定性、渐近性、振动性周期性等),从而把握这个离散变量的变化过程的规律,进步再结合其他分析,得到原问题的解。
四、设计原理分析1、差分方程定义含有未知函数yt=f(t)以及yt的差分Dyt, D2yt,…的函数方程,称为常差分方程(简称差分方程);出现在差分方程中的差分的最高阶数,称为差分方程的阶。
n阶差分方程的一般形式为F(t,yt,Dyt,…, Dnyt)=0,其中F是t,yt, Dyt,…, Dnyt的已知函数,且Dnyt一定要在方程中出现。
含有两个或两个以上函数值yt,yt+1,…的函数方程,称为(常)差分方程,出现在差分方程中未知函数下标的最大差,称为差分方程的阶。
n阶差分方程的一般形式为F(t,yt,yt+1,…,yt+n)=0,其中F为t,yt,yt+1,…,yt+n的已知函数,且yt和yt+n一定要在差分方程中出现。
2、差分方程的意义与应用差分方程模型有着广泛的应用。
实际上,连续变量可以用离散变量来近似逼近,从而微分方程模型就可以近似于某个差分方程模型。
差分方程模型有着非常广泛的实际背景。
在经济金融保险领域、生物种群数量结构规律分析、疫病和病虫害的控制与防治、遗传规律的研究等许许多多的方面都有着非常重要的的作用。
可以这样讲,只要牵涉到关于变量的规律,性质,就可以适当的用差分方程模型来表现体与分析求解。
3、用MATLAB仿真时用的相关函数说明在用MATLAB仿真离散系统的差分方程时可以用函数y=filter(p,d,x)实现差分方程的仿真,用y=impz(p,d,N)求系统的冲激响应。
3.1利用filter函数实现差分方程说明:filter([1,2],1,[1,2,3,4,5])实现 y[k]=x[k]+2*x[k-1]y[1]=x[1]+2*0=1%(x[1]之前状态都用0)y[2]=x[2]+2*x[1]=2+2*1=43.2用filter函数求该差分方程y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1]的单位冲激响应和单位阶跃响应说明:单位冲激响应:a1=[1,0.75,0.125];b1=[1,-1];n=0:20;x1=[1 zeros(1,20)];y1filter=filter(b1,a1,x1);stem(n,y1filter);title('y1filter');xlabel('x');ylabel('y');单位阶跃响应:a1=[1,0.75,0.125];b1=[1,-1];n=0:20;x2=ones(1,21);y1filter=filter(b1,a1,x2); stem(n,y1filter); title('y1filter_step'); xlabel('x'); ylabel('y');3.3用impz 函数求差分方程y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1]的单位冲击响应和单位阶跃响应说明: 单位冲击响应: a1=[1,0.75,0.125]; b1=[1,-1]; impz(b1,a1,21); 单位阶跃响应: a=[1,0.75,0.125]; b=1; impz(b,a);即y=filter(p,d,x)用来实现差分方程,d 表示差分方程输出y 的系数,p 表示输入x 的系数,而x 表示输入序列。
输出结果长度数等于x 的长度。
y=impz(p,d,N)是用来实现冲击响应的,d 和p 的定义见filter ,N 表示冲击响应输出的序列个数。
五、详细设计1、设计函数思路利用MATLAB 软件实现这个仿真过程,其中应用到filter 函数来实现差分方程的零状态响应,利用impz 函数来实现差分方程0~20区间的样值的取样。
2、理论计算由)1()()2(5.0)1(25.0)(-+=-+--n f n f n y n y n y 两边Z 变换得)1)(()21411)((121---+=+-Z Z F Z Z Z Y ⇒2141214111)(22211+-+=+-+=---Z Z Z Z Z Z Z Z H ⇒jZ K jZ K j Z j Z Z ZZ H 8318183181)83181)(83181(1)(21--++-=--+-+=求得:3129311jK +=,j j K 3129312-+-=⇒)(])8311)(312931()8311)(312931[()(n j jj j j n h nn ε+-+-+-+=再由21)(-=Z Z Z F 得)5.025.0)(5.0()1()(2+--+=Z Z Z Z Z Z Y ⇒j Z K j Z K Z K Z Z Y 831818318121)(321--++-+-= 求得:561=K ,j 31331-j 315-11-2+=K ,j313-31-j 31511-3+=K 求得:)(])8311(3133131511)83181(3133131511)21)(56[()(n j jj j j j n y nn n ε+--+-+-+---+=3、设计过程记录第一次:a=[1 -0.25 0.5]; %差分方程系数 b=[1 1]; %差分方程系数 n=0:20; %序列个数 fn=0.5.^n; %输入序列 y=filter(b,a,fn); %系统零状态响应 subplot(1,3,1),stem(n,fn,'filled');title('输入序列');grid on subplot(1,3,2),stem(n,y,'filled');title('0~20区间的样值');grid on subplot(1,3,3),stem(n,y,'filled');title('零状态响应');grid on这一次的程序代码编写完后仿真得出上面的图形我们发现0~20区间阶跃响应仿真图不对,经过讨论后发现程序中没有写0~20区间阶跃响应的代码,经过完善程序后,进行第二次仿真,如下所示:第二次:a=[1 -0.25 0.5]; %差分方程系数 b=[1 1]; %差分方程系数b1=1; n=0:20; %序列个数 fn=0.5.^n; %输入序列 y1=filter(b,a,fn); %系统零状态响应 y2=impz(b1,a,0:20); %0~20区间阶跃响应 subplot(1,3,1),stem(n,fn,'filled');title('输入序列');grid on subplot(1,3,2),stem(n,y2,'filled');title('0~20区间的样值');grid on subplot(1,3,3),stem(n,y1,'filled');title('零状态响应');grid on102000.10.20.30.40.50.60.70.80.91输入序列01020-0.500.511.520~20区间的样值01020-0.50.511.52零状态响应这次仿真之后我们讨论了得到的波形图,一开始我们以为是正确的,后来发现0~20区间样值的波形图错了,经过上网查阅相关资料才知道是这里的程序代码写错了,经过修改后我们经行第三次仿真实验;第三次:a=[1 -0.25 0.5]; %差分方程系数 b=[1 1]; %差分方程系数 n=0:20; %序列个数 fn=0.5.^n; %输入序列 y1=filter(b,a,fn); %系统零状态响应 y2=impz(b,a,0:20); %0~20区间冲激响应subplot(1,3,1),stem(n,fn,'filled');title('输入序列');grid on subplot(1,3,2),stem(n,y2,'filled');title('0~20区间的样值');grid on subplot(1,3,3),stem(n,y1,'filled');title('零状态响应');grid on102000.10.20.30.40.50.60.70.80.9101020-0.500.5101020-0.50.511.52这一次仿真后经过我们核对,这次的仿真是正确。
六、总结这次的课程设计项目是用MATLAB 仿真实现差分方程,在我们出现过许多错误,这其中主要的错就是在编写0~20区间冲激响应的相关程序代码,导致这一部分在第一次生成仿真图与零状态响应相同;而在第二次仿真时生成的是阶跃响应的波形;然后经过修改在第三次仿真时得出的结果与理论上一致,我们得出正确的结果。
刚开始着手用MATLAB 做课程设计时感觉有点一头雾水,没有方向,不知该从哪开始,后来经过仔细研究,慢慢感觉不太难做,最后也还算是顺利完成课程设计。
在做课程设计之前一定要将课本上的相关知识点理解,因为这是基础,要多看相关的例题,否则相关知识点不清楚会给设计加大难度,浪费很多时间。
102000.10.20.30.40.50.60.70.80.9101020-1-0.500.511.501020-0.50.511.52。