08第八讲-MATLAB频域编程
- 格式:ppt
- 大小:2.36 MB
- 文档页数:16
基于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 的线性系统的频域分析基本知识(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 中。
第一章绪论1.1 概述机械信号是指机械系统在运行过程中各种随时间变化的动态信息,经各种测试仪器拾取并记录和存储下来的数据或图像。
机械设备是工业生产的基础,而机械信号处理与分析技术则是工业发展的一个重要基础技术。
随着各行各业的快速发展和各种各样的应用需求,信号分析和处理技术在信号处理速度、分辨能力、功能范围以及特殊处理等方面将会不断进步,新的处理激素将会不断涌现。
当前信号处理的发展主要表现在:1.新技术、新方法的出现;2.实时能力的进一步提高;3.高分辨率频谱分析方法的研究三方面。
信号处理的发展与应用是相辅相成的,工业方面应用的需求是信号处理发展的动力,而信号处理的发展反过来又拓展了它的应用领域。
机械信号的分析与处理方法从早期模拟系统向着数字化方向发展。
在几乎所有的机械工程领域中,它一直是一个重要的研究课题。
机械信号分析与处理技术正在不断发展,它已有可能帮助从事故障诊断和监测的专业技术人员从机器运行记录中提取和归纳机器运行的基本规律,并且充分利用当前的运行状态和对未来条件的了解与研究,综合分析和处理各种干扰因素可能造成的影响,预测机器在未来运行期间的状态和动态特性,为发展预知维修制度、延长大修期及科学地制定设备的更新和维护计划提供依据,从而更为有效地保证机器的稳定可靠运行,提高大型关键设备的利用率和效率。
机械信号处理是通过对测量信号进行某种加工变换,削弱机械信号中的无用的冗余信号,滤除混杂的噪声干扰,或者将信号变成便于识别的形式以便提取它的特征值等。
机械信号处理的基本流程图如图1.1所示。
图1.1机械信号处理的基本流程本文主要就第三、第四步骤展开讨论。
第2章机械信号的时域处理及其分析方法2.1 时域统计特征参数处理通过时域波形可以得到的一些特征参数,它们常用于对机械进行快速评价和简易诊断。
2.1.1有量纲的幅值参数有量纲的幅值参数包括方根幅值、平均幅值、均方幅值和峰值等。
若随机过程x(t) 符合平稳、各态历经条件且均值为零,设x为幅值,p(x)为概率密度函数,有量纲型幅值参数可定义为.1厂X r,l =2X,丨=1X rms,丨=2jXp,l T 旳式中:xr为方根均值,x为均值,Xrms为均方值,Xp为峰值由于有量纲型幅值参数来描述机械状态,不但与及其的状态有关,而且与机器的运动参数(如转速、载荷等)有关,因此直接用它们评价不同工况的机械无法得出统一的结论。
matlab编程实现求解基于振型叠加法的多自由度动力学系统的时域和频域响应动力学系统的时域和频域响应可以通过振型叠加法进行计算。
在MATLAB 中,可以通过编写程序来实现该方法的求解。
假设考虑的动力学系统是一个n自由度的系统,其动力学模型可以表示为:M*x'' + C*x' + K*x = F(t)其中,M是质量矩阵,C是阻尼矩阵,K是刚度矩阵,x是位移向量,F(t)是外力向量。
为了使用振型叠加法求解该系统的响应,需要先求解系统的固有振型和固有频率。
可以通过使用MATLAB中的eig函数来计算该系统的特征值和特征向量。
[V, D] = eig(K, M);其中,V是特征向量矩阵,D是特征值矩阵。
通过特征值和特征向量可以得到系统的固有频率和振型:omega_n = sqrt(diag(D)); % 固有频率Phi = V; % 固有振型接下来,可以根据零初条件来计算系统的响应。
可以通过定义初始位移和速度向量,以及外力向量,来求解系统的时域响应。
可以使用MATLAB中的ode45函数来求解非线性微分方程组。
% 定义初始状态向量x0 = [0; 0; ...; 0; 0]; % 位移和速度% 定义外力函数F = @(t) [f1(t); f2(t); ...; fn(t)];% 定义动力学方程odefun = @(t, x) [ x(n+1:2*n); ...; - inv(M)*(C*x(n+1:2*n) + K*x(1:n))+inv(M)*F(t) ];% 运行ode45函数[t, x] = ode45(odefun, [0, T], x0);另外,还可以通过FFT函数来求解该系统的频域响应。
可以通过计算系统的传递函数,并对输入信号进行快速傅里叶变换来得到系统的频域响应。
% 计算系统的传递函数H = inv(j*omega_n.*eye(n) - K + j*C*omega_n).*F;% 对输入信号进行FFT变换N = length(F);F_fft = fft(F);freq = linspace(0, 1/T, N);% 计算系统的频域响应X_fft = H .* F_fft;以上就是使用MATLAB实现基于振型叠加法求解多自由度动力学系统的时域和频域响应的方法。
MATLAB编程比较AM,DSB,SSB的时域、频域的不同。
设计目的1 加深对AM,DSB,SSB信号调制基本原理的理解。
2 了解AM,DSB,SSB调制的实现方法,观察其时域及频域的波形。
设计原理及流程图(1)AM信号的表达式、频谱及带宽在线性调制系列中,最先应用的一种幅度调制是全调幅或常规调幅,简称为调幅(AM)。
不但在频域中已调波频谱是基带调制信号频谱的线性位移,而且在时域中,已调波包络与调制信号波形呈线性关系。
调制信号m(t)叠加直流后再与载波相乘,则输出的信号就是常规双边带调幅(AM)信号。
AM调制器模型如下图所示。
AM信号的时域和频域表示式分别为式中,Aο为外加的直流分量;m(t)可以是确知信号也可以是随机信号,但通常认为其平均值为0,(2). DSB信号的表达式、频谱及带宽在幅度调制的一般模型中,若假设滤波器为全通网络(=1),,调制信号m(t)中无直流分量,则输出的已调信号就是无载波分量的双边带调制信号,或称抑制载波双边带(DSB-SC)调制信号,简称双边带(DSB)信号。
DSB调制器模型如下图所示。
可见DSB信号实质上就是基带信号与载波直接相乘,其时域和频域表示式分别为tc ωcos )(t m )(t s DSB ×图3-7 D SB 调制器模型DSB 调制器模型t t m t s c DSB ωcos )()(=Sdsb (ω)=1/2 [M (ω+ωc )+M (ω-ωc )](3)单边带调制(SSB )由于DSB 信号的上、下两个边带是完全对称的,皆携带了调制信号的全部信息,因此,从信息传输的角度来考虑,仅传输其中一个边带就够了。
这就又演变出另一种新的调制方式――单边带调制(SSB )。
SSB 信号的产生产生SSB 信号的方法很多,其中最基本的方法有滤波法和相移法。
(a )用滤波法形成SSB 信号用滤波法实现单边带调制的原理图如 下图所示tc ωcos )(t m )(t s SSB ×图3-9 S SB信号的滤波法产生)(ωSSB HSSB 信号的滤波法产生显然,SSB 信号的频谱可表示为用滤波法形成SSB 信号,原理框图简洁、直观,但存在的一个重要问题是单边带滤波器不易制作。
用MATLAB实现连续系统的频域分析
MATLAB是一款具有强大功能的科学数学软件,它用于数值计算、算法设计、函数图形化等,也可以用于连续系统的频域分析。
下面介绍一般的频域分析的基本步骤,并用MATLAB编程实现,从而实现连续系统的频域分析。
首先,将连续时间信号转换为数字,并计算出相应的变换系数。
一般情况下,可以使
用MATLAB中的函数“fft”和“ifft”根据时域输入信号进行傅里叶变换。
具体过程,可
以按照以下步骤逐步实现:
1. 首先,将函数转换成实数集合并将它们用MATLAB以连续信号的形式写出。
2. 接着,遵循N分频原则,解决连续信号的采样问题,然后对其进行频谱分析。
3. 然后,在实际计算中,根据采样时间及相关的参数计算频率及其带宽,并将每个
离散频率的相应信号分量分开。
4. 接着,使用MATLAB的fft()函数进行正变换处理,得到实现的频域模型。
5. 最后,使用disp()或plot()函数,将计算出的频谱信号以可视化的方式展现出来,方便观察和分析。
MATLAB中,提供了多种用于傅里叶变换的函数,可用于连续系统的频域分析,比如
fft()函数和ifft()函数,等等。
使用这些函数,可以在MATLAB中实现连续系统的频域分析,帮助用户轻松地进行频域分析,并展示出可视化的结果,提高效率。
基于MATLAB的控制系统频域设计姓名:学院:专业:班级:学号:基于MATLAB的控制系统频域设计一实验目的1. 利用计算机作出开环系统的波特图2. 观察记录控制系统的开环频率特性3. 控制系统的开环频率特性分析二预习要点1.预习Bode图和Nyquist图的画法;2.Nyquist稳定性判据内容。
三实验方法1、奈奎斯特图(幅相频率特性图)对于频率特性函数G(jw),给出w从负无穷到正无穷的一系列数值,分别求出Im(G(jw))和Re(G(jw))。
以Re(G(jw)) 为横坐标, Im(G(jw)) 为纵坐标绘制成为极坐标频率特性图。
MATLAB提供了函数nyquist()来绘制系统的极坐标图,其用法如下:nyquist(a,b,c,d):绘制出系统的一组Nyquist曲线,每条曲线相应于连续状态空间系统[a,b,c,d]的输入/输出组合对。
其中频率范围由函数自动选取,而且在响应快速变化的位置会自动采用更多取样点。
nyquist(a,b,c,d,iu):可得到从系统第iu个输入到所有输出的极坐标图。
nyquist(num,den):可绘制出以连续时间多项式传递函数表示的系统的极坐标图。
nyquist(a,b,c,d,iu,w)或nyquist(num,den,w):可利用指定的角频率矢量绘制出系统的极坐标图。
当不带返回参数时,直接在屏幕上绘制出系统的极坐标图(图上用箭头表示w的变化方向,负无穷到正无穷)。
当带输出变量[re,im,w]引用函数时,可得到系统频率特性函数的实部re和虚部im及角频率点w矢量(为正的部分)。
可以用plot(re,im)绘制出对应w从负无穷到零变化的部分。
2、对数频率特性图(波特图)对数频率特性图包括了对数幅频特性图和对数相频特性图。
横坐标为频率w,采用对数分度,单位为弧度/秒;纵坐标均匀分度,分别为幅值函数20lgA(w),以dB表示;相角,以度表示。
MATLAB提供了函数bode()来绘制系统的波特图,其用法如下:bode(a,b,c,d,iu):可得到从系统第iu个输入到所有输出的波特图。
如何利用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为傅里叶逆变换后的结果。
01 MATLABChapterMATLAB概述与特点发展历程及应用领域发展历程应用领域安装与界面介绍安装用户可以从MathWorks官网下载MATLAB安装程序,根据提示完成安装过程。
安装过程中需要选择安装路径、添加环境变量等步骤。
界面介绍MATLAB界面包括命令窗口、工作空间、当前目录窗口、命令历史窗口等部分。
用户可以在命令窗口中输入命令并执行,工作空间展示当前变量和函数,当前目录窗口显示当前工作路径下的文件和文件夹,命令历史窗口记录用户输入的命令历史。
01020304变量与数据类型条件语句与循环语句数组与矩阵操作函数编写与调用基本操作入门02数据类型与运算规则Chapter整数类型包括有符号和无符号整数,如int8、uint8、int16、uint16等。
浮点数类型包括单精度和双精度浮点数,如single、double。
特殊数值如Inf表示无穷大,-Inf表示负无穷大,NaN表示非数字。
字符数组01字符串操作02字符编码03逻辑型数据逻辑函数逻辑运算逻辑值(~)等逻辑运算符。
逻辑真(true)和逻辑假(false)。
数组与矩阵运算规则数组创建数组索引矩阵运算特殊矩阵03程序设计基础ChapterMATLAB 中变量名区分大小写,以字母开头,可包含字母、数字和下划线,不能是MATLAB保留字。
变量命名规则变量作用域特殊变量局部变量只在其所在的函数或脚本中有效,全局变量在整个MATLAB 工作环境中都有效。
MATLAB 提供了一些特殊变量,如ans 、pi 、i 或j (虚数单位)等,可以直接使用。
变量命名规则及作用域条件语句if-else语句用于根据条件执行不同的代码块,switch-case语句用于多分支选择。
循环语句for循环用于指定次数的重复执行,while循环用于满足条件时的重复执行。
流程控制语句break语句用于提前退出循环,continue语句用于跳过本次循环的剩余部分。
条件语句和循环语句应用函数定义MATLAB 中可以使用function 关键字定义函数,包括输入参数、输出参数和函数体。
实验4Z变换和系统频域特性的MATLAB实现⼩实验4 Z 变换和系统频域特性的MATLAB 实现1. 实验⽬的学习通过Z 变换来分析离散系统的频率响应,并⽤MATLAB 实现。
加深对系统的零、极点分布概念的理解。
2. 实例分析2.1通过Z 变换分析求解系统的冲激响应()h n已知⽤线性常系数差分⽅程:1()()()NMk r k r y n a y n k b x n r ===-+-∑∑表⽰的线性时不变系统其系统函数为:01()()()1Mrr r N kk k b zY z H z X z a z-=-===-∑∑ (3-1)上式为两个关于1z -的多项式之⽐,即()H z 为有理分式。
同时,式可以表⽰成部分分式的形式:110()1NM Nkk k k k k R H z C z p z ---===+-∑∑ 则可以通过所熟悉的常见序列的Z 变换形式求得()H z 的Z 反变换,从⽽求得系统的冲激响应函数()h n 。
MATLAB 提供了⼀个内部函数residuez( ),来计算有理多项式的留数和直接项,residuez( )函数有⼏种调⽤⽅式:(1)[R,p,C] = residuez(b,a),在已知以分⼦⾏向量b 和分母⾏向量a 下,得到列向量R 含有留数,列向量p 是极点位置,⾏向量C 包含直接项;(2)[b,a] = residuez(R,p,C),将部分分式展开式转换到分⼦⾏向量b 和分母⾏向量a.MATLAB 还提供了⼀个内部函数impz(b,a,N),在已知分⼦⾏向量b 和分母⾏向量a 下,计算N 点的单位冲激响应()h n 。
例3.1 求系统:123412340.0018360.0073440.0110160.0073740.001836()1 3.0544 3.8291 2.29250.55075z z z z H z z z z z --------++++=-+-+的单位冲激响应()h n 。