MATLAB进行控制系统频域分析
- 格式:doc
- 大小:262.50 KB
- 文档页数:15
《自动控制原理》实验3.线性系统的频域分析实验三线性系统的频域分析一、实验目的1.掌握用MATLAB语句绘制各种频域曲线。
2.掌握控制系统的频域分析方法。
二、基础知识及MATLAB函数频域分析法是应用频域特性研究控制系统的一种经典方法。
它是通过研究系统对正弦信号下的稳态和动态响应特性来分析系统的。
采用这种方法可直观的表达出系统的频率特性,分析方法比较简单,物理概念明确。
1.频率曲线主要包括三种:Nyquist图、Bode图和Nichols图。
1)Nyquist图的绘制与分析MATLAB中绘制系统Nyquist图的函数调用格式为:nyquist(num,den) 频率响应w的范围由软件自动设定 nyquist(num,den,w) 频率响应w的范围由人工设定[Re,Im]= nyquist(num,den) 返回奈氏曲线的实部和虚部向量,不作图2s?6例4-1:已知系统的开环传递函数为G(s)?3,试绘制Nyquists?2s2?5s?2图,并判断系统的稳定性。
num=[2 6]; den=[1 2 5 2]; nyquist(num,den)极点的显示结果及绘制的Nyquist图如图4-1所示。
由于系统的开环右根数P=0,系统的Nyquist曲线没有逆时针包围(-1,j0)点,所以闭环系统稳定。
p =-0.7666 + 1.9227i -0.7666 - 1.9227i -0.4668图4-1 开环极点的显示结果及Nyquist图若上例要求绘制??(10?2,103)间的Nyquist图,则对应的MATLAB语句为:num=[2 6]; den=[1 2 5 2];w=logspace(-1,1,100); 即在10-1和101之间,产生100个等距离的点nyquist(num,den,w)2)Bode图的绘制与分析系统的Bode图又称为系统频率特性的对数坐标图。
Bode图有两张图,分别绘制开环频率特性的幅值和相位与角频率?的关系曲线,称为对数幅频特性曲线和对数相频特性曲线。
MatIab技术控制系统性能分析指南概论当今社会,控制系统已成为各种领域中重要的技术和应用之一。
它们被广泛用于工业自动化、机电设备、航天航空等众多领域中。
控制系统的性能分析是确保系统正常运行和提高系统性能的必要步骤。
Mat1ab作为一种功能强大的工具,为控制系统性能分析提供了多种方法和技术。
本文将介绍一些基本的MaIIab技术,帮助读者进行控制系统性能分析。
一、系统建模在进行控制系统性能分析之前,首先需要进行系统建模。
系统建模是将实际物理系统抽象为数学模型的过程。
掌握系统建模方法对于准确分析系统性能至关重要。
Mat1ab提供了一系列工具和函数,可以用于快速建立系统模型。
有两种常用的系统建模方法:时域建模和频域建模。
1.时域建模时域建模基于系统的时间响应特性。
通过测量系统的输入和输出信号,并对其进行采样和离散化,可以得到系统的差分方程。
MaUab中的State-space函数是进行时域建模的常用工具。
它可以根据系统的状态方程和输出方程生成系统模型。
可以使用如下代码进行建模:A=∏2;341;B=[1;1];C=[10];D=O;sys=ss(A,B,C,D);其中,A、B、C和D分别表示状态空间方程的系数矩阵。
利用该函数建立的系统模型可以方便地进行时域性能分析。
2.频域建模频域建模基于系统的频率响应特性。
通过测量系统的输入和输出信号的频谱,并进行信号处理,可以得到系统的传递函数。
Mat1ab中的tf函数是进行频域建模的常用工具。
它可以根据系统的传递函数生成系统模型。
可以使用如下代码进行建模:num=[1];den=[11];sys=tf(num,den);其中,num和den分别表示传递函数的分子和分母系数。
利用该函数建立的系统模型可以方便地进行频域性能分析。
二、系统性能评估建立了系统模型之后,就可以进行系统性能的评估了。
针对不同的性能指标,可以使用不同的分析方法。
1稳态误差分析稳态误差衡量了系统在输入信号为稳态信号时的输出误差。
实验一 MATLAB 及仿真实验(控制系统的时域分析)一、实验目的学习利用MATLAB 进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、预习要点1、 系统的典型响应有哪些2、 如何判断系统稳定性3、 系统的动态性能指标有哪些 三、实验方法(一) 四种典型响应1、 阶跃响应:阶跃响应常用格式:1、)(sys step ;其中sys 可以为连续系统,也可为离散系统。
2、),(Tn sys step ;表示时间范围0---Tn 。
3、),(T sys step ;表示时间范围向量T 指定。
4、),(T sys step Y =;可详细了解某段时间的输入、输出情况。
2、 脉冲响应:脉冲函数在数学上的精确定义:0,0)(1)(0〉==⎰∞t x f dx x f其拉氏变换为:)()()()(1)(s G s f s G s Y s f ===所以脉冲响应即为传函的反拉氏变换。
脉冲响应函数常用格式: ① )(sys impulse ; ②);,();,(T sys impulse Tn sys impulse③ ),(T sys impulse Y =(二) 分析系统稳定性 有以下三种方法:1、 利用pzmap 绘制连续系统的零极点图;2、 利用tf2zp 求出系统零极点;3、 利用roots 求分母多项式的根来确定系统的极点 (三) 系统的动态特性分析Matlab 提供了求取连续系统的单位阶跃响应函数step 、单位脉冲响应函数impulse 、零输入响应函数initial 以及任意输入下的仿真函数lsim.四、实验内容 (一) 稳定性1. 系统传函为()27243645232345234+++++++++=s s s s s s s s s s G ,试判断其稳定性2. 用Matlab 求出253722)(2342++++++=s s s s s s s G 的极点。
%Matlab 计算程序num=[3 2 5 4 6];den=[1 3 4 2 7 2];G=tf(num,den);pzmap(G);p=roots(den)运行结果: p =+ - + -P ole-Zero MapReal AxisI m a g i n a r y A x i s-2-1.5-1-0.500.5-1.5-1-0.50.511.5图1-1 零极点分布图由计算结果可知,该系统的2个极点具有正实部,故系统不稳定。
实验三利用MATLAB进行系统频域分析系统频域分析是指通过对系统的输入输出信号进行频域分析,从而分析系统的频率响应特性和频率域特征。
利用MATLAB进行系统频域分析可以方便地实现信号的频谱分析、滤波器设计等功能。
下面将介绍如何利用MATLAB进行系统频域分析的基本步骤。
一、信号频谱分析1. 将信号导入MATLAB环境:可以使用`load`函数导入数据文件,或者使用`audioread`函数读取音频文件。
2. 绘制信号的时域波形图:使用`plot`函数绘制信号的时域波形图,以便对信号的整体特征有一个直观的了解。
3. 计算信号的频谱:使用快速傅里叶变换(FFT)算法对信号进行频谱分析。
使用`fft`函数对信号进行频域变换,并使用`abs`函数计算频谱的幅度。
4. 绘制信号的频谱图:使用`plot`函数绘制信号的频谱图,以便对信号的频率特征有一个直观的了解。
二、滤波器设计1.确定滤波器类型和要求:根据系统的要求和信号的特性,确定滤波器的类型(如低通滤波器、高通滤波器、带通滤波器等)和相应的频率响应要求。
2. 设计滤波器:使用MATLAB中的滤波器设计函数(如`fir1`、`butter`、`cheby1`等)来设计滤波器。
这些函数可以根据指定的滤波器类型、阶数和频率响应要求等参数来生成相应的滤波器系数。
3. 应用滤波器:使用`filter`函数将滤波器系数应用到信号上,得到滤波后的信号。
三、系统频率响应分析1. 生成输入信号:根据系统的要求和实际情况,生成相应的输入信号。
可以使用MATLAB中的信号生成函数(如`square`、`sine`、`sawtooth`等)来生成基本的周期信号,或者使用`randn`函数生成高斯白噪声信号。
2.绘制输入信号的频谱图:使用前面提到的信号频谱分析方法,绘制输入信号的频谱图。
3. 输入信号与输出信号的频域分析:使用`fft`函数对输入信号和输出信号进行频谱分析,并使用`abs`函数计算频谱的幅度。
基于MATLAB自动控制系统时域频域分析与仿真MATLAB是一款强大的数学软件,也是自动控制系统设计的常用工具。
它不仅可以进行时域分析和频域分析,还可以进行相关仿真实验。
本文将详细介绍MATLAB如何进行自动控制系统的时域和频域分析,以及如何进行仿真实验。
一、时域分析时域分析是指对系统的输入信号和输出信号进行时域上的观察和分析,以了解系统的动态特性和稳定性。
MATLAB提供了一系列的时域分析工具,如时域响应分析、稳态分析和步骤响应分析等。
1.时域响应分析通过时域响应分析,可以观察系统对于不同的输入信号的响应情况。
在MATLAB中,可以使用`lsim`函数进行系统的时域仿真。
具体步骤如下:- 利用`tf`函数或`ss`函数创建系统模型。
-定义输入信号。
- 使用`lsim`函数进行时域仿真,并绘制系统输出信号。
例如,假设我们有一个二阶传递函数模型,并且输入信号为一个单位阶跃函数,可以通过以下代码进行时域仿真:```num = [1];den = [1, 1, 1];sys = tf(num, den);t=0:0.1:10;u = ones(size(t));[y, t, x] = lsim(sys, u, t);plot(t, y)```上述代码中,`num`和`den`分别表示系统的分子和分母多项式系数,`sys`表示系统模型,`t`表示时间序列,`u`表示输入信号,`y`表示输出信号。
通过绘制输出信号与时间的关系,可以观察到系统的响应情况。
2.稳态分析稳态分析用于研究系统在稳态下的性能指标,如稳态误差和稳态标准差。
在MATLAB中,可以使用`step`函数进行稳态分析。
具体步骤如下:- 利用`tf`函数或`ss`函数创建系统模型。
- 使用`step`函数进行稳态分析,并绘制系统的阶跃响应曲线。
例如,假设我们有一个一阶传递函数模型,可以通过以下代码进行稳态分析:```num = [1];den = [1, 1];sys = tf(num, den);step(sys)```通过绘制系统的阶跃响应曲线,我们可以观察到系统的稳态特性。
Matlab频域分析实验报告引言频域分析是一种常用的信号处理技术,可以帮助我们理解信号的频率特性和频率成分。
在本实验中,我们将使用Matlab进行频域分析,并通过实际的信号示例来说明其应用。
实验目标本实验的目标是通过Matlab进行频域分析,了解信号的频率特性,并能够对信号进行频域滤波、谱估计和频域增强。
实验步骤步骤一:加载信号数据首先,我们需要加载信号数据。
在Matlab中,我们可以使用load()函数来加载数据文件。
假设我们的信号数据文件名为signal.mat,则可以使用以下代码进行加载:load('signal.mat');步骤二:绘制时域波形图加载信号数据后,我们可以通过绘制时域波形图来观察信号的时域特性。
可以使用plot()函数来绘制信号的时域波形图。
以下是示例代码:plot(signal);xlabel('时间');ylabel('信号幅度');title('信号的时域波形图');步骤三:进行傅里叶变换为了将信号转换到频域,我们需要进行傅里叶变换。
在Matlab中,可以使用fft()函数对信号进行傅里叶变换。
以下是示例代码:signal_freq = fft(signal);步骤四:绘制频域幅度谱进行傅里叶变换后,我们可以绘制信号的频域幅度谱来观察信号的频率特性。
可以使用abs()函数来计算频域幅度,并使用plot()函数来绘制频域幅度谱图。
以下是示例代码:signal_freq_amp = abs(signal_freq);plot(signal_freq_amp);xlabel('频率');ylabel('幅度');title('信号的频域幅度谱');步骤五:频域滤波频域分析不仅可以帮助我们观察信号的频率特性,还可以进行频域滤波。
例如,我们可以通过在频域中将低幅度的频率成分设置为0来实现低通滤波。
一、实验目的1. 掌握频域分析的基本原理和方法;2. 熟悉MATLAB在频域分析中的应用;3. 分析不同系统的频域特性,评估系统性能;4. 理解频率响应与系统稳定性之间的关系。
二、实验原理频域分析是一种研究系统对信号频率响应特性的方法。
它将时域信号转换为频域信号,通过分析系统对不同频率信号的响应来评估系统的性能。
频域分析方法主要包括傅里叶变换、拉普拉斯变换和Z变换等。
三、实验仪器与软件1. 实验仪器:计算机、MATLAB软件;2. 实验软件:MATLAB R2018a。
四、实验内容1. 信号的产生与处理(1)产生一个连续时间信号f(t) = cos(2π×50t) + sin(2π×100t);(2)使用MATLAB的fourier函数进行傅里叶变换,得到频谱函数F(w);(3)使用MATLAB的ifourier函数进行傅里叶逆变换,得到时域信号f(t)。
2. 系统的频率响应分析(1)定义一个典型二阶系统G(s) = (s+2)/(s^2+2s+2);(2)使用MATLAB的bode函数绘制系统G(s)的Bode图;(3)分析Bode图,评估系统的稳定性、带宽和相位裕度;(4)使用MATLAB的nyquist函数绘制系统G(s)的Nyquist图;(5)分析Nyquist图,评估系统的稳定性。
3. 离散时间系统的频率响应分析(1)定义一个离散时间系统H(z) = (z-0.5)/(z-0.75);(2)使用MATLAB的zplane函数绘制系统H(z)的Z平面图;(3)分析Z平面图,评估系统的稳定性。
五、实验结果与分析1. 信号的产生与处理通过MATLAB产生的连续时间信号f(t)如图1所示,其频谱函数F(w)如图2所示。
图1 连续时间信号f(t)图2 频谱函数F(w)2. 系统的频率响应分析Bode图如图3所示,Nyquist图如图4所示。
图3 系统G(s)的Bode图图4 系统G(s)的Nyquist图从Bode图中可以看出,系统的带宽约为100Hz,相位裕度约为60°。
利用matlab进行信号和系统的复频域分析心得
利用MATLAB进行信号和系统的复频域分析是非常常见的。
下面是一些心得和步骤供参考:
1. 导入信号数据:首先,你需要将信号数据导入到MATLAB中。
这可以通过多种方式实现,例如读取文件或直接生成信号矩阵。
2. 选择合适的频域分析方法:根据你的需求和信号类型,选择合适的频域分析方法。
常见的方法包括傅里叶变换、快速傅里叶变换(FFT)、离散傅里叶变换(DFT)等。
3. 执行频域分析:使用MATLAB提供的相应函数,如fft()或fftshift()来执行频域分析。
这将为你提供信号的频谱信息。
4. 绘制频谱图:使用MATLAB的绘图函数,如plot()或stem(),将频谱数据可视化为频谱图。
你可以选择线性频谱图或对数频谱图,具体取决于信号特性和需求。
5. 分析频谱信息:根据频谱图,你可以分析信号的频率分量、幅度特性以及相位特性。
对于系统分析,你还可以计算系统的传递函数。
6. 系统设计和优化:根据频域分析结果,你可以对系统进行设计和优化。
例如,你可以确定降噪滤波器的截止频率,或者针对特定的频率范围进行信号增强。
需要注意的是,MATLAB提供了丰富的信号处理和系统分析工具箱,可以帮助你更轻松地完成复频域分析任务。
同时,请确保使用合法授权的软件和工具,遵守中国法律政策。
matlab频域分析实验报告Matlab频域分析实验报告引言频域分析是信号处理领域中的重要内容,它能够帮助我们理解信号在频域上的特性和行为。
而Matlab作为一款强大的数学计算软件,可以帮助我们进行频域分析,并且提供了丰富的工具和函数来实现这一目的。
本实验报告将介绍使用Matlab进行频域分析的方法和步骤,并通过实验数据展示其应用效果。
实验目的本实验旨在通过Matlab软件进行频域分析,掌握信号在频域上的特性和行为,了解频域分析在实际应用中的重要性和价值。
实验内容1. 信号生成:首先,我们使用Matlab生成一个具有特定频率和幅度的信号,以便进行后续的频域分析。
2. 时域分析:接下来,我们将对生成的信号进行时域分析,包括波形图和功率谱密度图的绘制,以便了解信号在时域上的特性。
3. 频域分析:然后,我们将使用Matlab提供的FFT函数对信号进行频域分析,得到信号在频域上的频谱图,并分析其频率成分和能量分布情况。
4. 频率响应:最后,我们将对信号进行频率响应分析,通过滤波器设计和频率域滤波来改变信号的频域特性,并观察其对信号的影响。
实验结果通过以上实验步骤,我们得到了生成信号的波形图和功率谱密度图,以及信号的频谱图和频率响应分析结果。
通过对这些结果的分析,我们可以清晰地了解信号在时域和频域上的特性和行为,以及频率响应对信号的影响。
结论本实验通过Matlab频域分析工具,帮助我们深入了解信号在频域上的特性和行为,为我们进一步应用频域分析提供了重要的参考和指导。
同时,Matlab的强大功能和丰富的工具库,为频域分析提供了便利和支持,使得我们能够更加高效地进行信号处理和分析工作。
因此,频域分析在实际应用中具有重要的意义和价值。
总结通过本实验,我们深入了解了Matlab频域分析的方法和步骤,以及其在实际应用中的重要性和价值。
频域分析对于理解信号的特性和行为具有重要意义,而Matlab作为一款强大的数学计算软件,为我们提供了丰富的工具和函数来实现频域分析,从而帮助我们更好地进行信号处理和分析工作。
利用Matlab进行控制系统设计和分析控制系统是各个工程领域中不可或缺的一部分。
它可以用来控制机器人、飞行器、电机以及其他众多的实际工程应用。
Matlab作为一种功能强大的数值计算软件,提供了丰富的工具和函数来进行控制系统设计和分析。
本文将介绍如何利用Matlab来进行控制系统的设计和分析。
一、控制系统基本概念在开始之前,我们先来了解一些控制系统的基本概念。
控制系统由三个基本组成部分构成:输入、输出和反馈。
输入是指信号或者指令,输出则是系统对指令的响应,而反馈则是输出信号对系统输入的影响。
二、Matlab中的控制系统工具箱Matlab提供了专门用于控制系统设计和分析的工具箱。
其中最重要的是Control System Toolbox。
该工具箱中包含了一系列用于控制系统设计和分析的函数和工具。
使用Control System Toolbox,我们可以很方便地进行控制系统的建模、设计和分析。
三、控制系统的建模控制系统的建模是指将实际系统抽象为数学模型。
在Matlab中,我们可以使用State Space模型、Transfer Function模型以及Zero-Pole-Gain模型来描述控制系统。
1. 状态空间模型状态空间模型是一种常用的描述系统动态响应的方法。
在Matlab中,我们可以使用stateSpace函数来创建状态空间模型。
例如,我们可以通过以下方式创建一个简单的二阶状态空间模型:A = [0 1; -1 -1];B = [0; 1];C = [1 0];D = 0;sys = ss(A, B, C, D);2. 传递函数模型传递函数模型是另一种常用的描述系统动态响应的方法。
在Matlab中,我们可以使用tf函数来创建传递函数模型。
例如,我们可以通过以下方式创建一个简单的一阶传递函数模型:num = 1;den = [1 2];sys = tf(num, den);3. 零极点增益模型零极点增益模型是用来描述系统频域特性的一种方法。
用MATLAB实现连续系统的频域分析
MATLAB是一款具有强大功能的科学数学软件,它用于数值计算、算法设计、函数图形化等,也可以用于连续系统的频域分析。
下面介绍一般的频域分析的基本步骤,并用MATLAB编程实现,从而实现连续系统的频域分析。
首先,将连续时间信号转换为数字,并计算出相应的变换系数。
一般情况下,可以使
用MATLAB中的函数“fft”和“ifft”根据时域输入信号进行傅里叶变换。
具体过程,可
以按照以下步骤逐步实现:
1. 首先,将函数转换成实数集合并将它们用MATLAB以连续信号的形式写出。
2. 接着,遵循N分频原则,解决连续信号的采样问题,然后对其进行频谱分析。
3. 然后,在实际计算中,根据采样时间及相关的参数计算频率及其带宽,并将每个
离散频率的相应信号分量分开。
4. 接着,使用MATLAB的fft()函数进行正变换处理,得到实现的频域模型。
5. 最后,使用disp()或plot()函数,将计算出的频谱信号以可视化的方式展现出来,方便观察和分析。
MATLAB中,提供了多种用于傅里叶变换的函数,可用于连续系统的频域分析,比如
fft()函数和ifft()函数,等等。
使用这些函数,可以在MATLAB中实现连续系统的频域分析,帮助用户轻松地进行频域分析,并展示出可视化的结果,提高效率。
如何利用Matlab技术进行频域分析MATLAB是一种功能强大的数学软件,被广泛应用于科学研究和工程领域。
其中的频域分析功能被广泛用于信号处理、图像处理、音频处理等领域。
本文将介绍如何利用MATLAB技术进行频域分析,以及常用的频域分析方法和技巧。
一、频域分析的基本概念在开始介绍如何利用MATLAB进行频域分析之前,我们先来了解一下频域分析的基本概念。
频域分析是指将信号从时域(时间域)转换到频域(频率域),以便更好地理解信号的频谱特性。
频域分析的基本原理是傅里叶变换。
傅里叶变换是将一个信号分解成一系列正弦函数和余弦函数的和,通过这种方式可以清晰地看到信号的频谱成分。
MATLAB中提供了多种傅里叶变换的函数,比如fft、ifft等,可以快速、方便地进行频域分析。
二、MATLAB中的频域分析函数MATLAB中提供了多种用于频域分析的函数,包括快速傅里叶变换(FFT)、离散傅里叶变换(DFT)、傅里叶逆变换(IFFT)等。
1. 快速傅里叶变换(FFT)快速傅里叶变换是一种将离散信号转换为频域表示的快速方法。
在MATLAB 中,可以使用fft函数进行快速傅里叶变换,如下所示:```MATLABX = fft(x);```其中,x为输入信号,X为傅里叶变换后的结果。
通过快速傅里叶变换,可以将信号从时域转换到频域,得到信号的频谱信息。
2. 离散傅里叶变换(DFT)离散傅里叶变换是一种将离散信号转换为频域表示的方法。
在MATLAB中,可以使用dft函数进行离散傅里叶变换,如下所示:```MATLABX = dft(x);```其中,x为输入信号,X为傅里叶变换后的结果。
3. 傅里叶逆变换(IFFT)傅里叶逆变换是一种将频域信号转换回时域信号的方法。
在MATLAB中,可以使用ifft函数进行傅里叶逆变换,如下所示:```MATLABx = ifft(X);```其中,X为输入的频域信号,x为傅里叶逆变换后的结果。
一、基于MATLAB 的线性系统的频域分析基本知识(1)频率特性函数)(ωj G 。
设线性系统传递函数为:nn n n m m m m a s a s a s a b s b s b s b s G ++⋅⋅⋅++++⋅⋅⋅++=---1101110)( 则频率特性函数为:nn n n m m m m a j a j a j a b j b j b j b jw G ++⋅⋅⋅++++⋅⋅⋅++=---)()()()()()()(1101110ωωωωωω 由下面的MATLAB 语句可直接求出G(jw )。
i=sqrt (—1) % 求取—1的平方根GW=polyval (num ,i*w )./polyval(den ,i*w )其中(num ,den )为系统的传递函数模型。
而w 为频率点构成的向量,点右除(./)运算符表示操作元素点对点的运算.从数值运算的角度来看,上述算法在系统的极点附近精度不会很理想,甚至出现无穷大值,运算结果是一系列复数返回到变量GW 中。
(2)用MATLAB 作奈魁斯特图。
控制系统工具箱中提供了一个MATLAB 函数nyquist( ),该函数可以用来直接求解Nyquist 阵列或绘制奈氏图。
当命令中不包含左端返回变量时,nyquist ()函数仅在屏幕上产生奈氏图,命令调用格式为:nyquist(num ,den) nyquist (num,den ,w) 或者nyquist(G) nyquist(G,w ) 该命令将画出下列开环系统传递函数的奈氏曲线: )()()(s den s num s G = 如果用户给出频率向量w ,则w 包含了要分析的以弧度/秒表示的诸频率点。
在这些频率点上,将对系统的频率响应进行计算,若没有指定的w 向量,则该函数自动选择频率向量进行计算。
w 包含了用户要分析的以弧度/秒表示的诸频率点,MATLAB 会自动计算这些点的频率响应。
当命令中包含了左端的返回变量时,即:[re,im ,w]=nyquist (G )或[re ,im,w ]=nyquist (G ,w ) 函数运行后不在屏幕上产生图形,而是将计算结果返回到矩阵re 、im 和w 中。
矩阵re和im 分别表示频率响应的实部和虚部,它们都是由向量w 中指定的频率点计算得到的.在运行结果中,w 数列的每一个值分别对应re 、im 数列的每一个值。
例5。
1 考虑二阶典型环节: 18.01)(2++=s s s G 试利用MATLAB 画出奈氏图.利用下面的命令,可以得出系统的奈氏图,如图5—1所示。
〉〉 num=[0,0,1];den=[1,0。
8,1];nyquist (num,den)% 设置坐标显示范围v=[—2,2,-2,2];axis(v)gridtitle (′Nyquist Plot of G(s )=1/(s^2+0。
8s+1) ′)(3)用MATLAB 作伯德图控制系统工具箱里提供的bode ()函数可以直接求取、绘制给定线性系统的伯德图. 当命令不包含左端返回变量时,函数运行后会在屏幕上直接画出伯德图。
如果命令表达式的左端含有返回变量,bode ()函数计算出的幅值和相角将返回到相应的矩阵中,这时屏幕上不显示频率响应图。
命令的调用格式为:[mag,phase ,w ]=bode(num ,den ) [mag ,phase,w]=bode (num ,den,w ) 或[mag ,phase ,w]=bode (G) [mag,phase,w]=bode (G,w ) 矩阵mag 、phase 包含系统频率响应的幅值和相角,这些幅值和相角是在用户指定的频率点上计算得到的。
用户如果不指定频率w ,MATLAB 会自动产生w 向量,并根据w 向量上图5-1 二阶环节奈氏图各点计算幅值和相角。
这时的相角是以度来表示的,幅值为增益值,在画伯德图时要转换成分贝值,因为分贝是作幅频图时常用单位.可以由以下命令把幅值转变成分贝:magdb=20﹡log10(mag )绘图时的横坐标是以对数分度的.为了指定频率的范围,可采用以下命令格式:logspace (d1,d2) 或logspace(d1,d2,n ) 公式logspace (d1,d2) 是在指定频率范围内按对数距离分成50等分的,即在两个十进制数1101d =ω和 2102d =ω之间产生一个由50个点组成的分量,向量中的点数50是一个默认值。
例如要在1.01=ω弧度/秒与1002=ω弧度/秒之间的频区画伯德图,则输入命令时,)(log 1101ω=d ,)(log 2102ω=d 在此频区自动按对数距离等分成50个频率点,返回到工作空间中,即w=logspace (-1,2)要对计算点数进行人工设定,则采用公式logspace (d1,d2,n )。
例如,要在11=ω与10002=ω之间产生100个对数等分点,可输入以下命令:w=logspace (0,3,100)在画伯德图时,利用以上各式产生的频率向量w,可以很方便地画出希望频率的伯德图。
由于伯德图是半对数坐标图且幅频图和相频图要同时在一个绘图窗口中绘制,因此,要用到半对数坐标绘图函数和子图命令。
1)对数坐标绘图函数利用工作空间中的向量x,y 绘图,要调用plot 函数,若要绘制对数或半对数坐标图,只需要用相应函数名取代plot 即可,其余参数应用与plot 完全一致。
命令公式有:semilogx(x ,y ,s)上式表示只对x 轴进行对数变换,y 轴仍为线性坐标。
semilogy(x ,y ,s )上式是y 轴取对数变换的半对数坐标图。
Loglog (x,y ,s)上式是全对数坐标图,即x 轴和y 轴均取对数变换。
2)子图命令MATLAB 允许将一个图形窗口分成多个子窗口,分别显示多个图形,这就要用到subplot()函数,其调用格式为:subplot (m ,n,k )该函数将把一个图形窗口分割成m ×n 个子绘图区域,m 为行数,n 为列数,用户可以通过参数k 调用各子绘图区域进行操作,子图区域编号为按行从左至右编号。
对一个子图进行的图形设置不会影响到其它子图,而且允许各子图具有不同的坐标系.例如,subplot(4,3,6)则表示将窗口分割成4×3个部分。
在第6部分上绘制图形。
MATLAB 最多允许9×9的分割。
例5。
2 给定单位负反馈系统的开环传递函数为:)7()1(10)(++=s s s s G 试画出伯德图。
利用以下MATLAB 程序,可以直接在屏幕上绘出伯德图如图5—2。
〉〉 num=10*[1,1];den=[1,7,0];bode(num,den )gridtitle (′Bode Diagram of G (s)=10*(s+1)/[s (s+7)] ′)该程序绘图时的频率范围是自动确定的,从0.01弧度/秒到30弧度/秒,且幅值取分贝值,ω轴取对数,图形分成2个子图,均是自动完成的。
如果希望显示的频率范围窄一点,则程序修改为:>> num=10*[1,1];den=[1,7,0];w=logspace (—1,2,50); % 从0。
1至100,取50个点。
[mag , phase, w ]=bode(num , den, w );magdB=20*log10(mag ) % 增益值转化为分贝值。
% 第一个图画伯德图幅频部分。
subplot (2,1,1);semilogx (w ,magdB , ′—r ′) % 用红线画gridtitle(′Bode Diagram of G(s )= 10*(s+1)/[s (s+7)] ′)xlabel (¹Frequency(rad/s )¹)ylabel(¹Gain (dB )¹)图5—2 自动产生频率点画出的伯德图% 第二个图画伯德图相频部分。
subplot(2,1,2);semilogx(w,phase, ¹—r¹);gridxlabel(¹Frequency(rad/s)¹)ylabel(′Phase(deg) ′)修改程序后画出的伯德图如5—3所示。
图5-3用户指定的频率点画出的伯德图(4). 用MATLEB求取稳定裕量同前面介绍的求时域响应性能指标类似,由MATLAB里bode()函数绘制的伯德图也可以采用游动鼠标法求取系统的幅值裕量和相位裕量。
例如,我们可以在图20的幅频曲线上按住鼠标左键游动鼠标,找出纵坐标(Magnitude)趋近于零的点,从提示框图中读出其频率约为7.25dB。
然后在相频曲线上用同样的方法找到横坐标(Frequence)最接近7。
25dB的点,可读出其相角为-53。
9度,由此可得,此系统的相角裕量为126.1度。
幅值裕量的计算方法与此类似.此外,控制系统工具箱中提供了margin()函数来求取给定线性系统幅值裕量和相位裕量,该函数可以由下面格式来调用:[Gm,Pm, Wcg,Wcp]=margin(G);(67)可以看出,幅值裕量与相位裕量可以由LTI对象G求出,返回的变量对(Gm, Wcg)为幅值裕量的值与相应的相角穿越频率,而(Pm, Wcp)则为相位裕量的值与相应的幅值穿越频率.若得出的裕量为无穷大,则其值为Inf,这时相应的频率值为NaN(表示非数值),Inf和NaN 均为MATLAB软件保留的常数。
如果已知系统的频率响应数据,我们还可以由下面的格式调用此函数。
[Gm, Pm, Wcg, Wcp]=margin(mag, phase, w);其中(mag, phase, w )分别为频率响应的幅值、相位与频率向量。
例5.3 已知三阶系统开环传递函数为: )232(27)(23+++=s s s s G利用下面的MATLAB 程序,画出系统的奈氏图,求出相应的幅值裕量和相位裕量,并求出闭环单位阶跃响应曲线.>> G=tf (3.5,[1,2,3,2]);subplot (1,2,1);% 第一个图为奈氏图nyquist(G);gridxlabel ('Real Axis')ylabel('Imag Axis’)% 第二个图为时域响应图[Gm ,Pm ,Wcg ,Wcp]=margin(G)G_c=feedback (G,1);subplot (1,2,2);step (G_c)gridxlabel (′Time (secs) ′)ylabel (′Amplitude ′)显示结果为:ans=1。
1429 1。
15781。
7321 1。