系统辨识的MATLAB实现方法(手把手)

合集下载

使用Matlab进行线性系统辨识与控制的技巧

使用Matlab进行线性系统辨识与控制的技巧

使用Matlab进行线性系统辨识与控制的技巧引言:线性系统辨识和控制是现代控制理论和工程应用中的重要内容。

Matlab作为一种强大的数学计算和编程软件,为我们提供了丰富的工具和函数,方便了线性系统辨识与控制的实现。

本文将介绍一些使用Matlab进行线性系统辨识与控制的技巧。

一、线性系统辨识1. 数据采集与预处理对于线性系统辨识,首先需要采集系统的输入输出数据。

在Matlab中可以使用内置函数来进行数据采集,如"sim"函数进行仿真实验,或者使用数据采集卡等外部设备来获取现实世界中的数据。

采集到的数据通常需要进行预处理,如去除噪声、滤波或数据归一化等。

在Matlab中有丰富的信号处理工具箱,可以方便地进行数据预处理。

2. 系统模型的选择线性系统辨识的目标是找到一个数学模型来描述实际系统的动态行为。

在选择系统模型时,可以根据应用需求选择合适的模型种类,如ARX模型、ARMA模型、ARMAX模型等。

在Matlab中,可以使用System Identification Toolbox来进行系统模型的选择和参数估计。

这个工具箱提供了多种模型结构和参数估计算法,方便用户根据系统特性进行模型的选择。

3. 参数估计与模型验证在选择好系统模型后,需要进行参数估计和模型验证。

在Matlab中,可以使用System Identification Toolbox中的函数来进行参数估计,如"armax"函数和"arx"函数等。

参数估计结果可以通过模型验证来评估模型的拟合程度和预测性能。

Matlab中的"compare"函数可以绘制真实输出和模型输出的对比曲线,帮助用户评估模型的准确性。

二、线性系统控制1. 控制器设计线性系统控制的目标是设计一个控制器来使得系统达到所期望的性能要求。

在Matlab中,可以使用Control System Toolbox来进行控制器设计。

利用Matlab进行系统辨识的基本步骤

利用Matlab进行系统辨识的基本步骤

利用Matlab进行系统辨识的基本步骤系统辨识是在工程领域中广泛应用的一项技术,它可以通过实验数据来推断系统的特性和行为。

Matlab作为一种强大的数值计算与数据可视化软件,在系统辨识领域也扮演着重要的角色。

本文将介绍利用Matlab进行系统辨识的基本步骤,以帮助读者更好地了解和应用这一技术。

系统辨识的基本步骤可以分为数据采集、预处理、模型选择、参数估计和模型评估五个阶段。

下面将依次介绍每个阶段的具体步骤。

一、数据采集数据采集是系统辨识中至关重要的一步,它需要准备好合适的实验设备,并进行数据记录。

在Matlab中,可以利用数据采集卡或传感器等设备进行数据采集。

一般来说,需要采集输入信号和输出响应信号。

二、预处理预处理是为了提高辨识结果的准确性而对采集到的数据进行处理。

首先要检查数据是否存在异常值或噪声,如果有则进行滤波处理。

另外,还可以进行数据归一化、降采样和数值平滑等处理,以适应不同的辨识方法。

三、模型选择模型选择是在系统辨识过程中非常关键的一步。

在Matlab中,可以选择多种模型结构进行辨识,包括线性模型、非线性模型、时变模型和非参数模型等。

选择合适的模型结构要根据具体问题的要求和实际情况进行综合考量。

四、参数估计参数估计是确定系统辨识结果的过程,它可以通过最小二乘法或极大似然法等统计方法来估计模型的参数。

在Matlab中,可以使用现成的函数或自定义算法进行参数估计。

参数估计的结果可以用来表示系统的传递函数、状态空间模型或差分方程等。

五、模型评估模型评估是对辨识结果进行验证和优化的过程。

在Matlab中,可以利用辨识误差、残差分析和模型预测误差等指标来评估模型的质量。

如果评估结果不理想,还可以尝试调整模型结构或参数估计方法,进行迭代优化。

在实际应用中,系统辨识常常涉及到复杂的数学理论和算法。

Matlab作为一种集成了各类工具箱和函数的软件,可以大大简化系统辨识的步骤,提高辨识的效率和准确性。

Matlab中的系统辨识与参数估计技术

Matlab中的系统辨识与参数估计技术

Matlab中的系统辨识与参数估计技术Matlab(Matrix Laboratory)是一款强大的数学软件,被广泛应用于科学计算、数据处理和工程设计等领域。

在实际工程项目中,经常需要通过已有的数据来推断系统的行为模型,这就涉及到系统辨识与参数估计技术。

本文将介绍在Matlab中使用系统辨识与参数估计技术的方法和步骤。

一、系统辨识与参数估计的概念系统辨识和参数估计是在给定输入输出数据的前提下,通过数学或统计方法来推断系统的动态模型和参数值的过程。

系统辨识旨在从实验数据中提取出模型的结构信息,而参数估计则是为了获得模型的具体参数值。

二、离散时间系统的辨识与参数估计对于离散时间系统,常用的辨识方法有ARX、ARMA和ARMAX等。

以ARX 模型为例,其数学表达式为:y(t) = -a(1)y(t-1) - a(2)y(t-2) - … - a(na)y(t-na) + b(1)u(t-1) + b(2)u(t-2) + … +b(nb)u(t-nb)其中,y(t)表示系统的输出,u(t)表示系统的输入,a和b分别是系统的参数。

在Matlab中,可以使用System Identification Toolbox来进行辨识和参数估计。

首先,需要将实验数据导入到Matlab中,然后根据数据的性质选择合适的辨识方法和模型结构。

接下来,使用辨识工具箱提供的函数,通过最小二乘法或最大似然估计等算法来得到系统的参数估计值。

三、连续时间系统的辨识与参数估计对于连续时间系统,常用的辨识方法有传递函数模型、状态空间模型和灰色系统模型等。

以传递函数模型为例,其数学表达式为:G(s) = num(s)/den(s)其中,num(s)和den(s)分别是系统的分子和分母多项式。

在Matlab中,可以使用System Identification Toolbox或Control System Toolbox 来进行连续时间系统的辨识和参数估计。

利用Matlab进行系统辨识的技术方法

利用Matlab进行系统辨识的技术方法

利用Matlab进行系统辨识的技术方法一、引言系统辨识是研究系统动态特性的一个重要方法,它广泛应用于控制系统、信号处理、通信等领域。

利用Matlab进行系统辨识能够实现快速、准确的模型建立和参数估计。

本文将介绍在Matlab环境下常用的系统辨识技术方法及其应用。

二、系统辨识的基本概念系统辨识是通过对系统的输入和输出信号进行观测和分析,以推断系统的结构和参数。

一般来说,系统辨识包括建立数学模型、估计系统参数和进行模型验证三个步骤。

1. 建立数学模型建立数学模型是系统辨识的第一步,它是描述系统行为的数学表达式。

常用的数学模型包括线性模型、非线性模型和时变模型等。

2. 估计系统参数在建立了数学模型之后,需要通过对实验数据的分析,估计出系统的参数。

参数估计可以通过最小二乘法、极大似然估计法等方法实现。

3. 模型验证模型验证是为了确定估计得到的系统模型是否准确。

常用的方法有经验验证、残差分析、模型检验等。

三、常用的系统辨识技术方法1. 线性参数模型线性参数模型是最常用的系统辨识方法之一。

它假设系统具有线性特性,并通过估计线性模型的参数来描述系统。

在Matlab中,可以使用函数"arx"进行线性参数模型的辨识。

2. 神经网络模型神经网络模型是一种非线性模型,它通过人工神经元的连接权值来描述系统行为。

在Matlab中,可以使用"nlarx"函数进行神经网络模型的辨识。

3. 系统辨识工具箱Matlab提供了丰富的系统辨识工具箱,包括System Identification Toolbox和Neural Network Toolbox等。

这些工具箱提供了各种方法和函数,方便用户进行系统辨识分析。

四、利用Matlab进行系统辨识的应用案例1. 系统辨识在控制系统中的应用系统辨识在控制系统中具有广泛的应用,如无人机控制、机器人控制等。

通过对系统进行辨识,可以建立准确的数学模型,并用于控制器设计和系统优化。

系统全参数辨识 matlab 实现

系统全参数辨识 matlab 实现

实用标准文案4. 设某物理量Y 与X 满足关系式Y=aX 2+bX+c ,实验获得一批数据如下表,试辨识模型参数a ,b 和c 。

(50分)报告要求:要有问题描述、参数估计原理、程序流程图、程序清单,最后给出结果及分析。

(1)问题描述:由题意知,这是一个已知模型为Y=aX 2+bX+c ,给出了10组实验输入输出数据,要求对模型参数a ,b ,c 进行辨识。

这里对该模型参数辨识采用递推最小二乘法。

(2)参数估计原理对该模型参数辨识采用递推最小二乘法,即RLS ( recurisive least square ),它是一种能够对模型参数进行在线实时估计的辨识方法。

其基本思想可以概括为:新的估计值)(ˆk θ=旧的估计值)1(ˆ-k θ+修正项 下面将批处理最小二乘法改写为递推形式即递推最小二乘参数估计的计算方法。

批处理最小二乘估计θˆ为Y T TΦΦΦ=-1)(ˆθ,设k 时刻的批处理最小二乘估计为:k T k k T k Y ΦΦΦ=-1)(ˆθ令111)]1()()1([)()(----+-=ΦΦ=k k k P k P T kT k ϕϕ K 时刻的最小二乘估计可以表示为k T k Y k P k Φ=)()(ˆθ=)]()()[(11k y k Y k P k T k ϕ+Φ-- =)]1(ˆ)()()[()1(ˆ--+-k k k y k K k Tθϕθ;式中)()()(k k P k K ϕ=,因为要推导出P(k)和K(k)的递推方程,因此这里介绍一下矩阵求逆引理:设A 、(A+BC )和(I +B CA 1-)均为非奇异方阵,则111111)()(------+-=+CA B CA I B A A BC A 通过运用矩(3)程序流程图(如右图1所示)递推最小二乘法(RLS)步骤如下:已知:n、b n和d。

aStep 1 :设置初值)0(ˆθ和P(0),输入初始数据;Step2 :采样当前输出y(k)、和输入u(k)Step3 :利用上面式①②③计算)(k K、)(ˆkθ和)(k P;Step4 :k→k+1,返回step2,继续循环。

利用Matlab进行系统辨识的技术方法

利用Matlab进行系统辨识的技术方法

利用Matlab进行系统辨识的技术方法在Matlab中进行系统辨识的技术方法主要有参数估计法和非参数估计法两种。

1.参数估计法:参数估计法是通过拟合已知输入和输出数据的数学模型来估计系统的参数。

常用的参数估计方法包括最小二乘法(OLS)、最小二乘法(LSE)、最小二乘法(MLE)和极大似然估计法(MLE)等。

a) 最小二乘法(OLS):OLS方法通过最小化实际输出与模型预测输出之间的误差平方和来估计系统参数。

在Matlab中,可以使用lsqcurvefit函数来实现最小二乘法的系统辨识。

b) 最小二乘法(LSE):LSE方法是通过最小化实际输出与模型预测输出之间的误差平方和来估计系统参数。

在Matlab中,可以使用lsqnonlin函数来实现最小二乘法的系统辨识。

c) 最小二乘法(MLE):MLE方法是通过最大化似然函数来估计系统参数。

在Matlab中,可以使用mle函数来实现最大似然估计法的系统辨识。

2.非参数估计法:非参数估计法不需要事先指定系统的数学模型,而是直接根据输入和输出数据的统计特性进行系统辨识。

常用的非参数估计方法包括频域方法、时域方法和时频域方法等。

a) 频域方法:频域方法通过对输入和输出数据进行频谱分析来估计系统的频率响应。

常用的频域方法包括傅里叶变换、功率谱密度估计和频率响应函数估计等。

在Matlab中,可以使用fft函数和pwelch函数来实现频域方法的系统辨识。

b) 时域方法:时域方法通过对输入和输出数据进行时间序列分析来估计系统的时域特性。

常用的时域方法包括自相关函数估计和互相关函数估计等。

在Matlab中,可以使用xcorr函数来实现时域方法的系统辨识。

c) 时频域方法:时频域方法结合了频域方法和时域方法的优势,可以同时估计系统的频率响应和时域特性。

常用的时频域方法包括短时傅里叶变换和小波变换等。

在Matlab中,可以使用spectrogram函数和cwt函数来实现时频域方法的系统辨识。

Matlab系统辨识尝试之详细过程1

Matlab系统辨识尝试之详细过程1

Matlab系统辨识尝试之详细过程1前面介绍了Matlab系统辨识工具箱的一些用法,这里拿一个直观的例子来尝试工具箱的具体用法。

比较长,给个简单目录吧:1.辨识的准备2.辨识数据结构的构造3.GUI辨识4.辨识效果5.对固有频率的辨识6.结构化辨识7.灰箱辨识8.加入kalman滤波的灰箱辨识1.辨识的准备在辨识前,首先要根据自己辨识的情况,确定要辨识的状态空间模型的一些特点,如连续还是离散的;有无直通分量(即从输入直通到输出的分量);输入延迟;初始状态等。

了解了这些情况就可以更快速的配置辨识时的一些设置选项。

2.辨识数据结构的构造使用原始数据构造iddata结构:data=iddata(y,u,Ts);这里以一个弹簧质量系统的仿真为例代码如下,其中用到了函数MDOFSolve,这在之前的博文介绍过(/?p=183),拿来用即可。

如果发现运行有错误,可以将MDOFSolve函数开头的一句omega2=real(eval(omega2));注释掉。

%弹簧质量系统建模clcclearclose allm=200;k=980*1000;c=1.5*1000;m1=1*m;m2=1.5*m;k1=1*k;k2=2*k;k3=k1;%%由振动力学知识求固有频率M=[m10;0m2];K=[k1+k2-k2;-k2k3+k2];[omega,phi,phin]=MDOFSolve(M,K);fprintf('固有频率:%fHz\n',subs(omega/2/pi));%%转化到状态空间innum=2;outnum=2;statenum=4;A=[0100;-(k1+k2)/m10k2/m10;0001;k2/m20-(k3+k2)/m20];B=[00;1/m10;00;01/m2];C=[1000;0010];D=zeros(outnum,innum);K=zeros(statenum,innum);mcon=idss(A,B,C,D,K,'Ts',0);%连续时间模型figureimpulse(mcon)%%信号仿真,构造数据供辨识n=511;%输入信号长度Ts=0.001;t=0:Ts:(n-1)*Ts;u1=idinput(n,'prbs');%输入1为伪随机信号u2=zeros(n,1);%输入2为空u=[u1u2];simdat=iddata([],u,Ts);%形成输入数据对象e=randn(n,2)*1e-7;simopt=simOptions('AddNoise',true,'NoiseData',e);%添加噪声yn=sim(mcon,simdat,simopt);%加噪声仿真y=sim(mcon,simdat);%无噪声仿真figurefor i=1:outnumsubplot(outnum,1,i)plot(t,y.OutputData(:,i))hold onplot(t,yn.OutputData(:,i),'r')axis tighttitle(sprintf('输出%d',i))legend({'无噪声仿真','含噪声仿真'})end%保存输入输出数据,供后续辨识data=iddata(y.OutputData,simdat.InputData,Ts);datan=iddata(yn.OutputData,simdat.InputData,Ts);运行后,变量data中保存了无噪声的系统仿真输入输出数据,datan中为含噪声的仿真数据。

使用Matlab技术进行系统辨识的基本方法

使用Matlab技术进行系统辨识的基本方法

使用Matlab技术进行系统辨识的基本方法概述:系统辨识是指通过对已知输入输出数据的分析和处理,推断出系统的动态性质和数学模型的过程。

在科学研究、工程设计和控制应用中,系统辨识扮演着重要的角色。

而Matlab作为一种强大的数值计算和数据分析软件,为系统辨识提供了便利且高效的工具。

本文将介绍使用Matlab进行系统辨识的基本方法,并结合实例进行讲解。

一、数据采集与准备在进行系统辨识之前,首先需要采集到对应的输入输出数据。

一般来说,输入信号是已知的,可以通过外部激励或者系统自身的变动来获取;而输出信号则是根据输入信号通过系统响应得到的。

在采集数据时,需要注意数据的质量和采样频率的选择。

二、数据预处理在进行系统辨识之前,数据通常需要进行一些预处理,以去除噪声、平滑数据和调整时间序列等。

这可以通过Matlab中的数据处理函数和滤波器实现。

例如,可以使用高斯滤波器对数据进行平滑处理,或者使用降噪算法去除不必要的噪声。

三、参数估计参数估计是系统辨识的核心步骤之一,它通过对已知数据进行分析和处理,推断出系统的数学模型和参数。

在Matlab中,有多种方法和工具可供选择,如最小二乘法、最大似然法、系统辨识工具箱等。

这些工具可以根据不同的模型和数据类型灵活选择,并提供相应的算法和函数。

四、模型验证与优化根据估计得到的系统模型和参数,可以使用Matlab进行模型验证和优化。

模型验证是指将估计得到的模型与真实系统进行对比,检验其拟合程度和预测能力。

如果模型的拟合程度较差,则需要对参数进行调整和优化,以提高模型的准确性和稳定性。

五、模型预测与应用在系统辨识完成之后,可以使用得到的模型进行系统预测和应用。

通过对未知输入信号进行预测,可以得到相应的输出响应,进而实现对系统动态性质的分析和控制。

Matlab提供了丰富的预测和应用函数,例如时域模拟、频域分析、控制系统设计等,可以满足不同应用场景的需求。

六、案例分析为了更好地理解和掌握使用Matlab进行系统辨识的基本方法,下面通过一个简单的案例进行分析。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图7 如果在下图 8 勾选红框这个选项, 就会出现我们刚才设定输入输出数 据的曲线, 如图 9 所示, 其他勾选项是频域的分析和显示, 暂不用它。
图8
图9 看看与我们实际设置的输入输出是否符合,如果符合,那么我们 离成功就不远咯,如果发现异常,那再好好检查一遍,直到确保数据 导入没有问题! 下面两段红色斜杠之间的内容,对于本实验,可以直接跳过,看 一下对后续复杂模型的处理有好处哦,也算全面熟悉一下工具。 /////////////////////////////////////////////////////////// 到这接着选 preprocess 也就是对数据进行预处理了, 下拉菜单中 有很多种处理方法和手段,有这个心思的人可以挨个试一下功能。图 10
最近在做一个项目的方案设计,应各位老总的要求,只有系统框 图和器件选型可不行, 为了凸显方案设计的高大上, 必须上理论分析, 炫一下“技术富” ,至于具体有多大实际指导实现系统 辨识有了一些初步的浅薄的经验,在此略做一小节。 必须要指出的是,本文研究对象是经典控制论理最简单最常用的 线性时不变的 siso 系统,而且是 2 阶的哦,也就是具有如下形式的 传递函数:
G(s)可以分解为: G ( s )

1 T 2 ( s 1 )( s 2 )
其中,
1 2 1 T 1 2 2 1 T
1



1 、2 都是实数且均大于零。
则有:
1 2 T , 1 2 2 12
1
传递函数进一步化为:

1 y (t )
2 1 e 1t e 2 t 2 1 2 1
1) ,得
令 1 = k 2 ( k
1 y (t )
k 2 t 1 k 2 t e e k 1 k 1
k 2t 1 ( k 1) 2t e 1 e k 1 k
G (s)
1 2 ( s 1 )( s 2 )
因此,辨识传递函数就转化为求解 1 、 2 。 当输入为单位阶跃函数时,对上式进行拉普拉斯反变换,得系统时域 下的单位阶跃响应为:
y (t ) 1
2 1 e 1t e 2 t 2 1 2 1
图4 在下图 5 红色圈区域输入之前得到的系统输入和输出数据,u 和 y
图5
在下图 6 绿色圈内输入数据的一些信息,因为之前模型中,阶跃起 点我是放在 0s 处的,这里也设置 0,如果前面模型仿真是 1s,这里 应该也是 1s;采样时间是 0.1s,根据实际情况设置统一哦
图6 设置完之后,点击 import 此时界面变成图 7
图1 图 1 系统的输入是阶跃信号, 用 Scope1 监视, 并输出量 u(101 ×1 的矩阵) ;本人在系统的阶跃响应声就是期望更真实的模拟实际情况,白噪声参数 设置见图 2
G(S )
2 (S 1 j )(S 1 j )
对于这个系统,若果用 simulink 做一下阶跃响应,再把实验数据 代入上述函数段,那就不行咯!怎么办呢,只能另辟蹊径了!
二、 (System Identification Tool)系统辨识工具箱 早听说 matlab 博大精深,神通广大了,于是乎我确定肯定有更简 单、直观、强大的工具来完成这小儿科把戏。查资料琢磨之后,我做 了个小实验,在 simulink 里验证了该种方法。该方法的大原则是: 在确定了系统的输入输出数据 (两个列向量 N×1 形式, 如果是 1×N, 会提示出错! ) 之后, 设计好一定的辨识原则 (比如说是 2 阶?3 阶?, 传递函数是零极点形式,还是带阻尼形式,等等) ,然后就交给强大 的 matlab,得到辨识结果。Step by step,plz! Step1、 建立模型获取系统输入输出数据
图 12 在本实验中,我们做如下设置,见图 13 红框标出部分。
图 13
然后点击最下方 Estimate,就有模型生成了。图 14
图 14 先勾选上图绿色框选项,看到了什么?给出了拟合率,best fits 98.72 有木有??传递函数具体的数值,双击上图红色框,见图 15?
图 15
在右边的数据栏中;也就是 model views 中了,下面有很多可以 选择,每选一个就可以生成一幅对应的图,是由用于验证的数据生成 的。把模型拖到 to workspace 那个方框,再去看 workspace,多的 那个变量就是你所辨识出的模型了
对上式两边取以 e 为底的对数得
ln1 y (t ) ln
当t
k 1 2 t ln 1 e ( k 1) 2 t k 1 k
1 时, ln 1 e ( k 1)2t 0 ,则上式化简为 k
ln1 y (t ) ln k 2t k 1
图 10 预处理的对象是 working data 中的数据,每进行一种预处理在左 边就会有新的数据生成,这时只要将新的数据移动到 working data 的那个方框,就可以将 working data 换成你所想处理的数据了,可 以这样多次进行处理, 得到你最终想用来辨识的数据和用于验证的数 据(不需要的数据可以拖到那个 trash 里面删除,就是回收站了,也 可以从回收站中找回的) 接下来就是辨识了,首先把辨识用的数据拖到 working data 那个 方 框 , 再 把 验 证 的 数 据 拖 到 validation data 那 个 方 框 , 这 个 validation data 就是最原始数据稍作处理得到的一个更接近理论模 型的对象数据,在这实验里,本人用的就是默认数据,也就是不做任 何 preprocess 处理。 ///////////////////////////////////////////////////////////
图2 同样在 Scope2 监视,也将结果输出到 workspace,得到响应数据 y(同样也是 101×1 的矩阵) Step 2、进入辨识工具箱&设置辨识规则 直接在 command window 输入 ident,回车,进入辨识工具箱图 3
图3
点击 import 下拉菜单,选时域数据 time domain data,见图 4
注意:在某个模型或某组数据上点一下,线变细了就不会在图中显示 出来了! ! ! ! ! ! ! !
最后再一次提出,上述分析并不一定完全正确,可能有些概念并 不清晰可靠,当然还有很多功能并没有被发掘,可以确定的是解决这 个问题的两个大方向没有问题,若想做到精益求精,还需要再仔细研 究斟酌哦!
1 G (s) 2 2 T s 2Ts 1
本文要做的就是,对于有这样传递函数的一个系统,要辨识得到 其中的未知数 T, ξ!!这可是控制系统设计分析的基础哦,没有系 统模型,啥理论、算法都是白扯,在实际工程中非常重要哦! 经过总结研究,在得到系统阶跃响应实验数据之后(当然如果是 其他响应,也有办法可以辨识,在此还是只讨论最简单的阶跃响应实 验曲线,谁让你我是菜鸟呢) ,利用 matlab 至少可以有两种方法实现 实现(目前我只会两种,呵呵) !
一、函数法 二、GUI 系统辨识工具箱
下面分别作详细介绍!
一、 函数法 看官别着急,先来做一段分析(请看下面两排红*之间部分) ,这 段分析是网上找来的,看看活跃一下脑细胞吧,如果不研读一下,对 于下面 matlab 程序,恐怕真的就是一头雾水咯!
*******************************************************************************
Matlab 程序代码:
clc close all t=[1 3 5 7 9 11 13 15 17 19]; y=[0.149086 0.5890067 0.830617 0.933990 0.973980 0.991095 0.995868 0.998680 0.999490 0.999850]; y2=log(1-y); plot(t,y2,'*'); grid on pm=polyfit(t,y2,1) value=polyval(pm,t); hold on plot(t,value,'r') title('\fontname{黑体}\fontsize{20}y(t)=at+b') w2=-pm(1) w1=w2/(1-exp(-pm(2))) T=1/sqrt(w1*w2) theta=(w1+w2)/(2*sqrt(w1*w2)) z=[]; p=[-w1 -w2]; k=w1*w2; sys=zpk(z,p,k) figure(2) step(sys,[0:0.5:20]); axis([0 20 0 1.2]) hold on plot(t,y,'r*')
点下拉菜单 estimate,选你想要的模型,在弹出的对话框中设定参 数,图 11
图 11 这里边的模型种类比较多,有线性的、非线性的、状态空间的、 经典传递函数形式的等等,我们所选的就是图中红色方框 process models,单击。弹出如下界面图 12!
极点个 数及其 他
传 递 函 数
是否有零点、 有 延迟、 有积分? 根据勾选, 传函 自动调整
打开 matlab,新建一个 Function,把上述程序段拷进去,保存,运行 ~~~~~~~~~,运行结果:
系统的传递函数为
G( S )
0.54034 ( S 1.126)(S 0.4797)
很顺利吧?先高兴一个!问题接着马上就来了,上面这个例子, 这个传递函数的极点刚好都是负实数,因此辨识得很顺利,但是如果 系统是欠阻尼系统,也就是如果传递函数的根是复数,那么上述函数 段,就无能为力咯,会出现说“matlab 无法处理增益为复数情况之 类· · · · · · ” 例如
相关文档
最新文档