用MATLAB仿真离散系统差分方程

合集下载

差分方程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来解决差分方程问题。

首先在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入门——离散系统仿真实例

第三讲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_幅相频谱等等

用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中,可以使用多种方法进行离散系统的建模。

最常用的方法是差分方程法和状态空间法。

差分方程法是将系统的输入输出关系表示为差分方程的形式,而状态空间法则是使用状态向量和状态方程来描述系统的动态行为。

在使用差分方程法进行建模时,可以使用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的离散控制系统仿真---已完成

实验二基于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 的离散控制系统仿真

基于 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仿真

离散系统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)——将传递函数模型转换成零极点增益模型。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档