离散系统的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的离散控制系统仿真一、实验目的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 实现一、实验目的1、掌握利用MATLAB 绘制系统零极点图的方法;2、掌握离散时间系统的零极点分析方法;3、学习离散系统响应的MATLAB 求解方法;4、掌握用MATALB 实现离散系统频率特性分析的方法;5、深刻理解离散系统的系统函数零极点对系统频响的影响,可以根据 零极点知识设计简单的滤波器。
二、基本原理(一)离散系统零极点线性时不变离散系统可用线性常系数差分方程描述,即()()N Miji j a y n i b x n j ==-=-∑∑ (1)其中()y k 为系统的输出序列,()x k 为输入序列。
将式(1)两边进行Z 变换,00()()()()()Mjjj Nii i b zY z B z H z X z A z a z-=-====∑∑ (2) 将式(2)因式分解后有:11()()()Mjj Nii z q H z Cz p ==-=-∏∏ (3)其中C 为常数,(1,2,,)j q j M =L 为()H z 的M 个零点,(1,2,,)i p i N =L 为()H z 的N 个极点。
系统函数()H z 的零极点分布完全决定了系统的特性,若某系统函数的零极点已知,则系统函数便可确定下来。
因此,系统函数的零极点分布对离散系统特性的分析具有非常重要意义。
(二)离散系统零极点图及零极点分析 1、零极点图的绘制设离散系统的系统函数为()()()B z H z A z =则系统的零极点可用MATLAB 的多项式求根函数roots()来实现,调用格式为:p=roots(A) 其中A 为待求根多项式的系数构成的行矩阵,返回向量p 则是包含多项式所有根的列向量。
如多项式为231()48B z z z =++,则求该多项式根的MATLAB 命令为为:A=[1 3/4 1/8]; P=roots(A) 运行结果为: P =-0.5000 -0.2500需注意的是,在求系统函数零极点时,系统函数可能有两种形式:一种是分子、分母多项式均按z 的降幂次序排列;另一种是分子、分母多项式均按1z -的升幂次序排列。
实验一 离散信号的MATLAB实现
实验一离散信号的MATLAB实现一、目的要求1)学习典型的离散时间信号的MATLAB实现方法;2)学习离散时间序列的基本运算:相加、相乘、移位等;3)学习噪声的产生;4)掌握两个序列的卷积和相关运算5)掌握离散系统单位脉冲响应的求解。
二、实验内容1)典型的离散信号的表示方法:用matlab产生单位抽样信号δ(n) 、单位阶跃序列u(n) 、矩形序列R N(n) 、实指数序列a n u(n)、正弦序列sin(ωn)。
编写程序、并画出图形。
n=-20:20;n0=0;n1=10;w0=pi/4;x=[(n-n0)==0];x1=[(n-n0)>=0];x2=[(n-n0)>=0& (n-n1)<=0];x3=0.9.^n.*x1;x4=sin(w0*n);subplot(511);stem(n,x);axis([ -20 20 0 2]);ylabel('\sigma(n)'); subplot(512);stem(n,x1);axis([ -20 20 0 2]);ylabel('u(n)');subplot(513);stem(n,x2);axis([ -20 20 0 2]);ylabel('B N(n)');subplot(514);stem(n,x3);axis([ -20 20 0 2]);ylabel('a n u(n)');subplot(515);stem(n,x4);axis([ -20 20 -2 2]);ylabel('sin(w0n)');xlabel('n');2)离散信号的基本运算:对序列x(n)={2,3,4,1,2,5} ,n=0,1,2,3,4,5,的移位、乘法、加法、翻转及尺度变换。
编写程序、并画出图形。
n=-10:10;k=2;N=length(n);x=zeros(size(n));x1=zeros(size(n));y=zeros(size(n));y1=zeros(size(n));y2=zeros(size(n));y3=zeros(size(n));y4=zeros(size(n));x(11:16)=[2 3 4 1 2 5];x1(11:16)=[1 2 3 4 5 6];y(1+k:N)=x(1:N-k);y1(1:N-k)=x(1+k:N);y2=x.*x1;y3=x+x1;y4=fliplr(x);y5=x(1:2:N);n1=fix(n(1:2:N)/2);subplot(421);stem(n,x);xlabel('n');ylabel('x(n)');subplot(422);stem(n,x1);xlabel('n');ylabel('x1(n)');subplot(423);stem(n,y);xlabel('n');ylabel('x(n-2)');subplot(424);stem(n,y1);xlabel('n');ylabel('x(n+2)');subplot(425);stem(n,y2);xlabel('n');ylabel('x(n)*x1(n)');subplot(426);stem(n,y3);xlabel('n');ylabel('x(n)+x1(n)');subplot(427);stem(n,y4);xlabel('n');ylabel('x(-n)');subplot(428);stem(n1,y5);xlabel('n');ylabel('x(2n)');3)噪声的产生:产生方差为1,2,0.5的白噪声。
离散信号及离散系统的MATLAB编程实现
数字信号处理课程实验报告实验名称离散信号及离散系统的MATLAB编程实现系别教师姓名实验地点实验日期一、实验内容1、用MATLAB仿真(编写)离散序列2、常见序列运算3、差分方程的求解4、系统零极点的求解。
(红色部分为必做项目)二、实验目的1. 复习离散时间的信号和系统,复习离散时间重要类型的信号和它们的运算的实现。
2. 熟悉MATLAB软件的集成开发环境,学会利用MATLAB编程及获得帮助的方法。
3. 学会利用MATLAB的绘图功能。
三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况)matlab软件,计算机四、实验试做记录(含程序、数据记录及分析)1、 Matlab表示序列MATLAB中,可采用向量表示序列,由于MATLAB中对序列下标默认为从1开始递增,因此要表示离散信号,一般应采用两个向量分别对信号的自变量和因变量进行描述。
如, n= -3~4,在MATLAB中表示为>> n = [-3, -2, -1, 0, 1, 2, 3, 4]; %自变量取值>> x = [ 2, 1, -1, 0, 1, 4, 3, 7]; %因变量取值说明:(1)向量可用方括号[ ]表示。
(2)当向量取值连续变化时可用冒号运算符“:”简化赋值过程,如的n值,可简化为n=[-3:4]或n= -3:4 。
(3)分号“;”表示不回显表达式的值。
(4)“%”表示其后内容为注释对象。
(5)符号“>>”是MATLAB命令窗口的输入提示符,此外,为便于多次调用,也可在m文件中输入相应的命令语句。
利用MATLAB,还可对信号的波形进行描述,常采用的绘图语句有stem,plot,subplot, axis,title,xlabel,ylabel,gtext, hold on, hold off, grid 等。
其中stem 绘制离散图形;plot 绘制连续图形;subplot 用于绘制子图,应在stem 或plot 语句前调用;axis 指定x 和y轴的取值范围,用在stem或plot语句后;title 标注图形名称,xlabel, ylabel 分别标注x轴和y轴名称;gtext可将标注内容放置在鼠标点击处;hold on和 hold off 用于控制对象绘制方式,是在原图上还是在新图上绘制;grid用于绘制网格。
离散信号的MATLAB实现
1.9离散信号和系统分析的MATLAB实现1.9.1利用MATLAB产生离散信号用MATLAB表示一离散序列x[k]时,可用两个向量来表示。
其中一个向量表示自变量k的取值范围,另一个向量表示序列x[k]的值。
例如序列x[k]={2,1,1,-1,3,0,2}可用 MATLAB表示为K=-2:4;x=[2,1,1,-1,3,0,2]可用stem(k,f)画出序列波形。
当序列是从k=0开始时,可以只用一个向量x来表示序列。
由于计算机内寸的限制,MATLAB无法表示一个无穷长的序列。
例1-38利用MATLAB计算单位脉冲序4δ-k在-k≤]24[≤范围内各点的取值。
解:%progran 1_1 产生单位脉冲序列Ks=-4;ke=4;n=2;K=[ks:ke];X=[(k-n)==0];Stem(k,x):xlabel(‘k’);程序产生的序列波形如图1-49所示。
例1-39利用MATLAB画出信号X[k]=10sin(0.02kπ)+n[k], 1000≤≤k的波形。
其中n[k]表示为均值为0方差为1的Gauss分布随机信号。
解:MALAB提供了两个产生(伪)随机序列的函数。
Rand(1,N)产生1行N列的[0,1]均匀分布随机数。
Randn(1,N)产生1行N列均值为0方差为1的Gauss分布随机数。
%program 1_2 产生受噪声干扰的正弦信号N=100;k=0:N;X=10*sin(0.02*pi*k)+randn(1,N+1);Plot(k,x);Xlabel(‘k’);Ylabel(‘x[k]’);程序产生序列如图1-50所示。
1.9.2 离散卷积的计算离散卷积是数字信号处理中的一个基本运算,MTLAB提供的计算两个离散序列卷积的函数是conv,其调用方式为y=conv(x,h)其中调用参数x,h为卷积运算所需的两个序列,返回值y是卷积结果。
MATLAB函数conv的返回值y中只有卷积的结果,没有y的取值范围。
matlab 离散系统求频率应
matlab 离散系统求频率应离散系统在信号处理和控制系统中起着重要的作用。
频率是描述信号特性的重要参数之一,在离散系统中求频率是一个常见的问题。
本文将介绍使用MATLAB来求解离散系统频率的方法和步骤。
我们需要了解离散系统的频率表示方式。
在离散系统中,频率是指信号在单位时间内重复出现的次数。
通常,频率可以用赫兹(Hz)表示,表示每秒重复的次数。
在离散系统中,频率通常用数字表示,称为离散频率。
离散频率的单位是周期数(cycles),表示在一个周期内重复的次数。
在MATLAB中,我们可以使用离散傅里叶变换(Discrete Fourier Transform,DFT)来求解离散系统的频率。
DFT将时域的离散信号转换到频域,得到信号的频谱信息。
通过分析频谱,我们可以获得信号的频率信息。
使用MATLAB求解离散系统频率的步骤如下:1. 准备离散信号数据。
首先,我们需要有一组离散信号数据。
可以通过采样连续信号得到离散信号,或者直接获取已经采样的离散信号数据。
2. 对离散信号进行DFT变换。
在MATLAB中,可以使用fft函数对离散信号进行DFT变换。
fft函数将离散信号从时域转换到频域,并返回一个复数数组,表示信号的频谱。
3. 计算离散频率。
根据采样频率和DFT结果,我们可以计算出离散频率。
离散频率可以通过以下公式计算:离散频率 = (DFT索引 / 信号长度) * 采样频率其中,DFT索引表示频谱中的频率点索引,信号长度表示离散信号的采样点数,采样频率表示每秒采样的点数。
4. 可视化频谱和频率。
可以使用MATLAB的绘图函数,如plot和stem,将信号的频谱和频率进行可视化。
通过观察频谱和频率特征,可以对离散系统的频率特性进行分析和判断。
需要注意的是,在使用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)——将传递函数模型转换成零极点增益模型。
离散时间信号与系统实验的matlab实现
离散时间信号与系统[实验目的]1.了解信号处理的基本操作2.熟悉一些常用的序列及其应用[实验原理]我们所接触的信号大多为连续信号,为使之便于处理,往往要对其进行采样,对信号抽样并保证其能完全恢复,对抽样频率有一定的限制。
基本的离散序列的定义如下:1.单位采样序列2.单位阶跃序列3.实指数序列,;a为实数4.复数指数序列,5.正余弦序列,6.周期序列,[实验内容]1.用MATLAB实现函数impseq(n0,n1,n2),使函数实现,。
函数定义:function [x,n]=impseq(n0,n1,n2)if (n1>n2||n0>n2||n0<n1)error('parameter error');end;if (n1<=n2)for n=1:n2-n1+1if (n==n0)x(1,n)=n1-1+n;x(2,n)=1;end;x(1,n)=n1-1+n;x(2,n)=0;end;x(2,n0-n1+1)=1;end;运行结果:impseq(3,1,9)ans =6 7 8 9 10 11 12 13 140 0 0 0 1 0 0 0 0注:上面一行为自变量n,下面一行为函数值,以下运行结果为两行的,都与此题同,不在表明。
2.用MATLAB实现函数stepseq(n0,n1,n2),使函数实现u(n-n0),。
函数定义:function [x,n]=stepseq(n0,n1,n2)if (n0>n2||n0<n1||n1>n2)error('parameter error');end;for n=1:n2-n1+1if (n+n1-1<n0)x(1,n)=n1+n-1;x(2,n)=0;elsex(1,n)=n1+n-1;x(2,n)=1;end;end;运行结果:Stepseq(4,2,10)ans =2 3 4 5 6 7 8 9 100 0 1 1 1 1 1 1 1 注:与上同,上面一行是自变量,下面一行是函数值。
实验一离散信号的MATLAB实现
实验一离散信号的MATLAB实现实验一:离散信号的MATLAB实现一、实验目的本实验旨在通过MATLAB实现离散信号的生成、绘制和基本操作,加深对离散信号处理的理解,并为后续实验做好准备。
二、实验原理离散信号是指在时间域或幅值域上取值有限的信号。
常见的离散信号包括矩形波、三角波、正弦波等。
在MATLAB中,可以使用不同的函数和参数来生成这些离散信号。
同时,使用MATLAB的绘图功能可以将离散信号绘制出来,以便观察和分析。
三、实验步骤1.生成离散信号首先,我们需要生成一个离散信号。
在MATLAB中,可以使用以下代码生成一个长度为N的离散信号:N = 100; % 信号长度t = 0:N-1; % 时间向量x = sin(2*pi*t/N); % 离散正弦波信号这段代码将生成一个长度为100、采样频率为N Hz的正弦波信号。
其中,t是时间向量,表示信号在每个采样点上的时间;x是信号的幅值向量,表示在每个采样点上的幅值。
2.绘制离散信号生成离散信号后,我们可以使用MATLAB的绘图功能将其绘制出来。
在MATLAB 中,可以使用以下代码将离散信号绘制出来:plot(t, x); % 绘制离散正弦波信号xlabel('Time (s)'); % 设置X轴标签ylabel('Amplitude'); % 设置Y轴标签title('Discrete Sine Wave'); % 设置标题这段代码将绘制出离散正弦波信号的图形,并添加了X轴和Y轴标签以及标题。
3.基本操作除了生成和绘制离散信号外,我们还可以对离散信号进行一些基本操作,如加减、乘除、翻转等。
例如,我们可以使用以下代码将两个离散信号相加:y = x + 2; % 将离散正弦波信号加上2这段代码将生成一个新的离散信号y,它是原来信号x的基础上加上2。
同样地,我们还可以对离散信号进行其他基本操作。
四、实验结果与分析通过本实验,我们成功地生成了离散正弦波信号,并将其绘制出来。
实验一 基于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实现
实验一离散信号的MATLAB实现引言:离散信号是连续信号在时间上离散采样得到的结果。
在实际应用中,离散信号常用于数字信号处理、通信系统、控制系统等领域。
MATLAB是一种功能强大的科学计算软件,对于离散信号的处理和分析具有良好的支持。
本实验将介绍如何使用MATLAB实现离散信号的生成、显示和处理。
实验目的:1.了解离散信号的概念和特点;2.学习使用MATLAB生成离散信号;3.学习如何在MATLAB中显示和处理离散信号。
实验步骤:步骤一:生成离散信号1.打开MATLAB软件;2.在命令窗口中输入以下代码,生成一个离散信号序列:```matlabt=0:0.1:10;x = sin(t);```上述代码中,`t`是时间序列,取值范围是0到10,步长为0.1;`x`是离散信号序列,通过将时间序列`sin(t)`采样得到。
步骤二:显示离散信号1.输入以下代码,在图形窗口中显示离散信号:```matlabstem(t, x);xlabel('Time');ylabel('Amplitude');title('Discrete Signal');```步骤三:离散信号处理1.输入以下代码,对离散信号进行平移操作:```matlabn=2;x_shifted = circshift(x, n);```上述代码中,`circshift`函数可以将离散信号序列循环移位`n`个单位。
2.输入以下代码,对平移后的离散信号进行加权平均:```matlabh=[0.5,0.5];y = conv(x_shifted, h);```上述代码中,`conv`函数可以对两个信号进行卷积操作,这里的`h`是平均权重系数。
3.输入以下代码,显示处理后的离散信号:```matlabfigure;subplot(2,1,1);stem(t, x);xlabel('Time');ylabel('Amplitude');title('Original Signal');subplot(2,1,2);stem(t, y);xlabel('Time');ylabel('Amplitude');title('Processed Signal');```上述代码中,`subplot`函数可以将多个图形显示在同一个图形窗口中,这里将原始信号和处理后的信号分别显示在上下两个子图中。
实验一 离散信号的MATLAB实现
实验一离散信号的MATLAB实现一、目的要求1)学习典型的离散时间信号的MATLAB实现方法;2)学习离散时间序列的基本运算:相加、相乘、移位等;3)学习噪声的产生;4)掌握两个序列的卷积和相关运算5)掌握离散系统单位脉冲响应的求解。
二、实验内容1)典型的离散信号的表示方法:用matlab产生单位抽样信号δ(n) 、单位阶跃序列u(n) 、矩形序列R N(n) 、实指数序列a n u(n)、正弦序列sin(ωn)。
编写程序、并画出图形。
n=-20:20;n0=0;n1=10;w0=pi/4;x=[(n-n0)==0];x1=[(n-n0)>=0];x2=[(n-n0)>=0& (n-n1)<=0];x3=0.9.^n.*x1;x4=sin(w0*n);subplot(511);stem(n,x);axis([ -20 20 0 2]);ylabel('\sigma(n)'); subplot(512);stem(n,x1);axis([ -20 20 0 2]);ylabel('u(n)');subplot(513);stem(n,x2);axis([ -20 20 0 2]);ylabel('B N(n)');subplot(514);stem(n,x3);axis([ -20 20 0 2]);ylabel('a n u(n)');subplot(515);stem(n,x4);axis([ -20 20 -2 2]);ylabel('sin(w0n)');xlabel('n');2)离散信号的基本运算:对序列x(n)={2,3,4,1,2,5} ,n=0,1,2,3,4,5,的移位、乘法、加法、翻转及尺度变换。
编写程序、并画出图形。
n=-10:10;k=2;N=length(n);x=zeros(size(n));x1=zeros(size(n));y=zeros(size(n));y1=zeros(size(n));y2=zeros(size(n));y3=zeros(size(n));y4=zeros(size(n));x(11:16)=[2 3 4 1 2 5];x1(11:16)=[1 2 3 4 5 6];y(1+k:N)=x(1:N-k);y1(1:N-k)=x(1+k:N);y2=x.*x1;y3=x+x1;y4=fliplr(x);y5=x(1:2:N);n1=fix(n(1:2:N)/2);subplot(421);stem(n,x);xlabel('n');ylabel('x(n)');subplot(422);stem(n,x1);xlabel('n');ylabel('x1(n)');subplot(423);stem(n,y);xlabel('n');ylabel('x(n-2)');subplot(424);stem(n,y1);xlabel('n');ylabel('x(n+2)');subplot(425);stem(n,y2);xlabel('n');ylabel('x(n)*x1(n)');subplot(426);stem(n,y3);xlabel('n');ylabel('x(n)+x1(n)');subplot(427);stem(n,y4);xlabel('n');ylabel('x(-n)');subplot(428);stem(n1,y5);xlabel('n');ylabel('x(2n)');3)噪声的产生:产生方差为1,2,0.5的白噪声。
基于matlab离散系统的设计原理
基于matlab离散系统的设计原理1.系统建模:首先需要将待设计的离散系统建立数学模型。
这可以通过差分方程、状态空间模型等方式来描述系统的动态行为。
MATLAB提供了丰富的工具和函数来支持系统建模,例如使用符号计算工具箱进行符号建模,或使用传统的数值方法创建差分方程。
2.系统分析:使用MATLAB进行系统分析是设计过程的重要一步。
通过使用系统分析工具,可以评估系统的稳定性、频率响应、步响应等性质。
MATLAB提供了FFT、bode、step等函数来进行频域和时域分析。
可以绘制各种图形,如必要的频谱、幅度响应和相位响应等图形,来评估系统特性。
3.控制器设计:根据系统的分析结果,使用MATLAB进行控制器的设计。
控制器可以是PID控制器、状态反馈控制器等。
具体的设计方法可以基于根轨迹法、频率响应法等。
MATLAB提供了控制系统工具箱,其中包含了一系列用于控制器设计和分析的函数和工具。
4.仿真和优化:利用MATLAB进行离散系统的仿真是非常重要的。
可以使用仿真工具箱中的函数来创建模型并进行系统仿真,以验证控制器的性能。
此外,可以使用MATLAB的优化工具箱来优化控制参数,以达到所需的控制效果。
5.实时实现:最后一步是将设计好的离散系统实时实现。
MATLAB提供了Simulink,用于实现从设计到实时执行的无缝转换。
可以通过使用Simulink进行硬件连接、编译控制器等操作来实现系统的实时控制。
总结而言,MATLAB提供了强大的工具和函数,支持离散系统的建模、分析、控制器设计、仿真和实时实现。
通过使用MATLAB,可以更加高效和可靠地进行离散系统的设计和开发。
基于MATLAB的离散系统分析与校正
2. 离散设计法
(1)根据期望性能指标要求,在z平面中确定校正后闭环系统φ(z)的零、极点期望 区域。
(2)在z平面中绘出原系统的开环零、极点分布图,根据其与期望区域的相对位置 选择合适的校正环节。
(3)通过MATLAB反复试探,确定合适的校正参数,将φ(z)的零、极点调整至期 望区域内。
自动控制工程基础与应用
基于MATLAB的离散系统分析与校正
1.1 离散系统的性能分析
在MATLAB中,可利用c2d函数将连续信号离散化处理,其调用格式为 sysd=c2d(sys,Ts,method)
利用feedback函数可根据离散系统的开环脉冲传递函数建立闭环离散系统的数学模 型,调用格式为
sysCLz=feedback(Dz,1)
(4)用离散系统的分析方法,通过仿真或实验来验证所设计的离散系统的基本性 能。
自Hale Waihona Puke 控制工程基础与应用基于MATLAB的离散系统分析与校正
1.2 离散系统的校正设计
1. 仿真设计法
仿真设计法的基本思路是:首先设计连续控制器;然后根据设计要求确定合适的采 样周期,将所设计的连续控制器离散化处理;最后用离散系统的分析方法,通过仿真或 实验来验证所设计的离散系统的基本性能。
基于MATLAB的离散系统分析与校正
实验一离散信号与系统时域分析的Matlab实现
实验1 离散信号与系统时域分析的Matlab实现一、实验目的1.掌握用Matlab表示常用离散信号的方法;2.掌握用Matlab求解离散系统的单位取样响应与零状态响应;3.掌握用Matlab实现离散信号卷积的方法;二、实验原理与内容1. Matlab基本操作打开Matlab 6.5,只保留命令窗口(Command Window),点击文本编辑窗口(M-file)创建、编辑M程序。
图1命令窗口在文本编辑窗口输入指令程序。
当输入完整程序后,点击DEBUG→RUN运行程序,或用键盘F5键直接运行。
另外,也可点击窗口快捷运行程序键。
图2文本编辑窗口编辑完成一个程序后,第一次运行或另存为时,需要保存M程序,保存的路径为命令窗口所示的当前目录路径(Current Directory),该路径可自行设置。
图3当前目录路径注意:M 文件在命名时有一定规则,错误命名时会使M 文件不能正常运行。
(1)M 文件名首字符不能是数字或下划线。
(2)M 文件名不能与Matlab 的内部函数名相同(3)M 文件名中不能有空格,不能含有中文。
一般应采用英文或拼音对M 文件命名。
2.离散信号的Matlab 表示表示离散时间信号x(n)需要两个行向量,一个是表示序号n=[ ],一个是表示相应函数值x=[ ],画图指令是stem 。
(1)正、余弦序列正、余弦序列为MATLAB 内部函数,可直接调用,文件名为sin 和cos 。
例1-1 画出()sin()4x n n π=的波形。
打开文本编辑窗口,输入波形程序:n=0:40;xn=sin(pi*n/4);stem(n,xn,'.')title('sin(pi*n/4)')运行,输出波形如下图4。
图4 ()x n 的波形图对于0cos()n ωϕ+或0sin()n ωϕ+,当2/πω是整数或有理数时,才是周期信号。
练习:(1)把上述程序中第三行分别改为stem(n,xn)、stem(n,xn,'*') 、stem(n,xn,' filled ') 后依次运行,看输出波形有何变化。
离散系统频域分析及matlab实现
离散系统频域分析及matlab实现
离散系统频域分析是对离散系统在频域上的特性进行研究的一种方法,主要包括幅频
特性和相频特性。
频域分析可以通过傅里叶变换、z变换等数学工具进行处理,并通过MATLAB等工具进行模拟实现。
幅频特性是指系统在不同频率下输出信号的幅度随输入信号幅度变化的特性。
幅频特
性通常用幅度响应函数来描述,它表示了系统对输入信号不同频率分量的增益或衰减程度。
以传递函数为基础的离散系统可以通过对其传递函数进行离散化得到差分方程和单位抽样
响应,然后通过对单位抽样响应进行傅里叶变换得到离散系统的频率响应函数。
在MATLAB 中,可以使用freqz函数计算离散系统的频率响应函数,并进一步计算幅度响应函数。
对于复杂的离散系统,可以通过级联、并联和反馈等方法进行分析和设计。
在MATLAB 中,可以使用series、parallel和feedback等函数进行组合模拟。
4.离散时间系统的Matlab实现
• a=[1,0,1/3, 0];
• b=[1/6, 1/2, 1/2, 1/6];
• xi=filtic(b,a,0,0);
• N=32;
• n=0:N-1;
• x1=[n==0];
MATLAB数字信号处
Imaginary Part
1 0.8 0.6 0.4 0.2
0 -0.2 -0.4 -0.6 -0.8
-1 -1
-0.5
0
0.5
Real Part
零点 极点
1 MATLAB数字信号处
filter
• 功能:对数字系统的输入信号进行滤波处 理。因为一个离散系统可以看作是一个滤 波器,系统的输出就是输入经过滤波器滤 波的结果。
– zi=filtic(b , a, y);求x=0,给定输入y时的初始状 态。
– 其中,x和y分别是表示过去的输入和输出。
MATLAB数字信号处
• 【例5】已知一个因果系统的差分方程为 6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3)满 足初始条件y(-1)=0,x(-1)=0.求系统的单位冲 激响应和阶跃响应。用filter()函数的 MATLAB程序(取N=32点作图)
离散时间系统的Matlab实现
MATLAB数字信号处
Impz函数
• 功能:求解系统的单位冲击响应 • 调用方式:
– [h,t]=impz(b,a):b、a分别为系统传递函数的分 子和分母的系数向量。返回系统(b,a)的冲激响 应h和相应的时间轴向量t。
– [h,t]=impz(b,a,n):返回n点冲激响应。 – impz(b,a);在当前窗口用stem(t,h )函数出图。
应用MATLAB分析离散控制系统
3.dslim()函数的调用格式
dslim(num,den,u)
其中:num为脉冲传递函数分子多项式系数;den为脉冲传递函数分母多项式系数;u为输入 信号。
自动控制原理
自动控制原理
应用MATLAB分析离散控制系统
1.1 连续系统与离散系统模型之间的转换 在MATLAB中对连续系统的离散化是通过c2dm()函数实现的,c2dm()函数的调
用格式为 [numd,dend] = c2dm(num,den,T,’zoh’)
其中zoh表示零阶保持器;T为采样周期,num为传递函数分子多项式系数; den为传递函数分母多项式系数。
表1-5 连续系统模型与离散系统模型转换函数
MATLAB函数
调用格式
函数说明
c2d
sysd=c2d(sysc,Ts,’method’)
连续时间LTI系统模型转换成 离散时间系统模型
c2dm
[numz,denz]=c2dm(num,den,T,’method’)
连续时间LTI传递函数模型转 换成离散时间传递函数模型
d2c d2cm d2d
sysc=d2c(sys,’method’)
离散时间系统模型转换成连续 时间LTI系统模型
1. [A,B,C,D]=d2cm(Ad,Bd,Cd,Dd,T,’method’)
离散时间状态空间模型 转换成连续时间状态空 间模型
sys=d2d(sysd,T)
离散时间模型转换成新的离散 时间系统模型
利用MATLAB中的dstep()函数可得到输出响应,如图1-29所示。程序如下: num = [0.368 0.264]; den = [1 -1 0.632]; dstep(num,den)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计题目:离散系统的MATLAB实现
一、设计目的
通过该设计,加强学生的实际操作能力,培养学生的创新能力,加深对MATLAB在信号与系统方面的应用的理解,并达到熟练掌握各相关函数的使用方法的目的,更好地理解系统的单位抽样响应,频率响应及零极点增益的概念及意义。
并且,进一步了解MATLAB广泛的应用。
二、设计内容及主要MATLAB函数
如图所示的一个离散系统
Z-10.2
x(n)y(n)
Z-10.1
0.4
0.5
该离散系统对应的输入输出差分方程为:
y(n)-0.4y(n-1)-0.5y(n-2)=0.2x(n)+0.1x(n-1)
求该系统的单位抽样响应,频率响应及零极点增益。
1.单位抽样响应
系统的单位抽样响应是当输入信号为单位抽样信号时系统的输出响应。
MATLAB中有两个函数可以计算系统的单位抽样响应:filter函数和impz函数。
1)filter函数
filter函数是利用递归滤波器或非递归滤波器对数据进行滤波。
因为一个离散系统可以看做一个滤波器。
系统的输出就是输入经过滤波器滤波的结果。
filter函数的格式为:
y=filter(b,a,x)
此函数是对由a和b组成的系统对输入进行滤波,如果输入为单位抽样信号δ(n),那么输出就是系统的单位抽样响应。
2)impz函数
impz函数的格式为:
impz(b,a)可直接给出系统的单位抽样响应。
2.频率响应H(e jw))
由向量a和b组成的系统的频率响应为:
M
∑b(r)e-jwr
r=0
H(e jw)=———————
N
1+∑a(k)e-jkw
k=1
MATLAB中的freqz函数使用基于FFT的算法来计算由向量a
和b组成的系统的频率响应。
其一般用法为:
[h,f]=freqz(b,a,n,Fs)
其中向量a和b由离散系统决定,Fs为采样频率,在[0,Fs]频率范围内选取n个频率点,并记录在f中。
由于freqz函数是采用基2的FFT算法,n常取2的幂次方,这样可以提高运算速度。
3.零极点增益
利用MATLAB中roots的函数可求得系统的零、极点,从而得到系统的零极点增益表示。
其一般用法为:
zr=roots(b)
zp=roots(a)
三、源程序
b=[0.20.1];
a=[-0.4-0.5];
x=[1,zeros(1,60)];
y=filter(b,a,x)
stem(y)
fs=1000;
[h,f]=freqz(b,a,64,fs)
abs(h)
plot(f,abs(h))
p=angle(h)
ph=p*180/p
plot(f) roots(b) roots(a) zplane(b,a)四、仿真结果
单位抽样响应图:
系统的频率响应图:
零点图:
极点图:
五、设计总结
通过这次课程设计,我感觉受益匪浅。
首先,通过自己亲自动手查阅资料、编程、调试,培养了我的实践能力和独立分析问题、解决问题的能力,进一步巩固和加深了对课程内容的理解和综合运用,为后续的专业课的课程设计、生产实践、毕业设计等环节奠定了良好的基础。
同时,也培养了我严谨的科学态度和创新精神。
我感觉到了科研人员的不容易。
他们必须有一丝不苟的严谨态度和坚持不懈的精神,才能做出成果。
因为一个小小的错误就可能导致整个程序错误,一点的疏忽也可能导致失败。
所以,在编程调试时一定要小心谨慎。
在编程调试的过程中,我也不可避免地遇到了很多的困难。
比如,函数使用方法不正确,数据输入方式不正确等等。
但在不断的修改与调试和老师的耐心辅导与帮助下,我成功的编好了程序,并且调试成功,做出了仿真结果。
我感到了成功的喜悦与自豪,小小的成就感在心中油然而生。
在具体的上机实践中,我学到了很多基本的MATLAB应用知识,也了解了MATLAB在信号与系统中的一些应用,更好地理解了系统的单位抽样响应,频率响应及零极点增益的概念及意义。
同时,我也更加熟练地掌握了各相关函数的使用方法,增强了MATLAB的实际应用知识。
总之,在这次课程设计中,我发现自己的实践能力得到了锻炼,理论与实际相联系的能力得到了提高,知识得到了很大增长,收获颇多。