动力系统建模与仿真-讲稿四

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

状态空间模型
n4sid(); pem();
线性离散时间序列
ar(); arx(); ivar();
%适用于多输出模型
非线性ARX model 模型 nlarx();
Hammerstein-Wiener 模 型
nlhw();
10
值得特别说明的是其所提供的pem()函数。这是一个高度灵活 的、使用极其方便的、几乎适用所有线性模型辨识的自适应方 法集成。这一点,由表3-1也可看出。其最大特点是由辨识数据 可直接辨识出连续的传递函数模型(模型阶数较低时),并可同 时给出系统的纯延迟,省去了一般辨识方法先辨识离散模型再 转换为离散模型的步骤。因此,非常适用于线性数学模型参数 辨识问题地求解。其调用格式为:
其中,data为生成的用于辨识的数据结构,y为输出数据列向量,
u为输入数据,Ts为试验时使用的采样周期。Iddata()函数有多
种调用方法,也可以带有多种与数据相关的参数,如输入、输
出数据的名称,采样保持器的形式等。辨识的数据结构生成后,
还可以用set()函数加以更改,用get()函数输出其结构参数以及
用plot(data)函数画出其波形图等。
6
2. 数据预处理
正如前面所述,辨识算法通常无法消除辨识数据中直流分量、 趋势分量以及噪声对辨识准确型的影响,为此,MATLAB提供 了一系列的数据预处理函数,可方便地用于辨识前的数据预处 理。
(1) 数据的直流分量或趋势分量去除函数detrend() detrend函数通常有两种调用方式:为去除数据中的直流分量,
对应的待辨识传递函数模型为
G(s)
Kp
(1
1 Tp1s)
eTds
且Kp值被限制在2~3之间。又如使用辨识命令
MODEL = pem (DAT, 'P2Z', 'Kp', 1.2, 'Kp', 'fix')
对应的待辨识传递函数模型为
G(s)
Kp
(1
1 Tzs Tp1s)(1
Tp2s)
且Kp值被指定为固定值1.2,这 意味着 Kp在辨识之前就是已知 的,不必参与辨识。
eTds
G(s)
Kp
s(1
1 Tzs Tp1s)(1 Tp2s)(1 Tp3s)
eTds
(5) 指定特性/参数值对:
调用格式为:
MODEL=pem(DATA,Mi,Property_1,Value_1,...., Property_n,Value_n)。
在MATLAB实现的系统辨识中,任何辨识方法的实现都是通过 一个模型数据结构(对象)实现的,如上面的MODEL。在辨识前, MATLAB首先创建一个初始的对象,对象中包含所有与辨识相 关的参数,如:参与辨识的试验数据(通常为用iddata()函数的 数据结构)、辨识使用的算法、待辨识参数的初始值、模型
14
的阶次、辨识结束的判断方法等。辨识后,所需的辨识结果也 同样存放在这个对象中。在多数情况下,辨识对象的创建由辨 识函数隐含完成,但如果必要,可通过使用‘特性/参数值对’, 对模型结构及辨识算法施加必要的影响。例如,对于上述连续 模型辨识使用辨识命令
MODEL = pem (DATA, Mi, 'P1D', 'Kp', {'max',3}, 'Kp', {'min',2});
可用
data1 = detrend(data); 类似的,为去除数据中随时间线性变化的趋势分量,可用
data2 = detrend(data, 1);
(2) 信号的重采样 当试验信号具有很高频率采样频率时,应该使用重采样的方
法降低采样频率以减弱高频噪声干扰对辨识结果的影响,同时
7
也可减少辨识的计算工作量。当试验信号采样频率不足时,应 该使用重采样的方法提高采样频率以补偿可能的系统高频信息 损失。在这方面,可使用MATLAB系统辨识工具箱提供的重采 样函数idresamp(),其调用格式为:
9
模型的形式
可调用的辨识函数
低阶连续传递函数模 型
(process model)
pem();
基本离散时间模型
armax(); arx(); bj(); iv4(); oe(); pem();
%仅适用于ARMAX 模型 %仅适用于ARX 模型 %仅适用于BJ 模型 %仅适用于ARX模型 %仅适用OE模型 %适用于所有模型
MODEL = pem (DATA, Mi);
其中,MODEL为返回的估计(辨识)模型,可以是离散时间模型 (包括相应的噪声模型),状态空间模型,连续的传递函数模型 等。不仅包含所估计的模型结构和参数,也包含辨识数据与估 计的模型间的协方差(MODEL. NoiseVariance),用于评价辨识 的效果及有效性;DATA 为用Iddata() 函数创建的用于辨识的 数据结构;Mi是用于定义辨识模型的形式和结构,这是一个定 义方法非常灵活的参数,可以是下述方法之一:
datar = idresamp(data, R, filter_order);
这里,data 为重采样前的辨识数据结构,datar为重采样后的辨 识数据结构。R=P/Q,含义为函数先以因子P 以外推的方法增 加系统的采样频率P倍,然后再以因子Q降低系统的采样频率Q 倍。显然,当R>1时,则增加原数据的采样频率,反之,则减 小原数据的采样频率。filter_order 为降采样频率时使用的滤波 器阶数,默认值为8。
15
辨识完成后,要获取模型的特性及参数,只需使用”点”索引 的方法即可,这与C语言中读取数据结构的方法是一致的。例 如:用语句MODEL.Tp1.value获取所辨识模型的时间常数,用
12
A(q1) y(k) B(q1) u(k) C(q1) e(k)
F (q1)
D(q 1 )
(4) 连续传递函数模型辨识:MODEL = pem (DATA, Mi),Mi = PxIDZU。在这种情况下,函数可直接返回被辨识模型的连续 传递函数。Mi这时实际上可解释为模型结构的定义命令(需用双 单引号包括)。命令解释如下:第一字符P表示要辨识模型的连 续传递函数;第二字符x为数字,可以是0, 1, 2, 或 3,表示模型 的极点数;第三字符I表示模型是否包含有积分环节,如没有, 该字符可以取消;第四字符D表示模型是否包含有纯延迟,如 没有,该字符可以取消;第五字符Z表示模型是否包含有实数 零点,如没有,该字符可以取消;第六字符U表示模型是否包 含有复数极点对,如没有,该字符可以取消。例如,Mi=’P2D’
(3) 信号的滤波。 对于辨识数据的滤波,可采用滤波函数 dataf = idfilt (data, filter);
8
其中,data 为滤波前的辨识数据结构,dataf为滤波后的辨识 数据结构。参数filter为滤波器的形式或参数。函数支持多种滤 波器及参数,也支持自定义滤波器,可进一步参考在线帮助的 内容。当然,要使用特殊的滤波方法,如小波滤波等方法,则 需编制专门的程序或调用小波分析工具箱函数。
动力系统建模与仿真
Power System Modeling and Simulation (4)
1
4. 基于MATLAB的系统辨识建模工具
4.1 基于MATLAB的系统辨识工具箱的系统建模-最小二乘法 4.2 应用MATLAB 遗传算法工具箱的辨识建模
2
利用系统辨识方法建立对象的数学模型,涉及到的内容和 方法较多,主要包括:观测数据的获取及预处理、数据检验、 模型结构选择、参数估计、模型检验和修改以及模型转换等。 由于实际建模中存在不确定性,获取对象数据时受条件和环境 的制约,从数据获取到模型的建立需反复搜索,计算量大,用 手工难以完成。
4
4.1 基于MATLAB的系统辨识工具箱的系统建模-最 小二乘法
1. 观测(试验)数据的输入
观测数据的输入是指将便是试验所获得的数据以某种方式输 入到MATLAB的工作空间(Workspace),以备其它辨识相关函 数使用。由于实验仪器的数据记录格式的不同,观测数据的输 入方法也有所不同。在大多数情况下,试验数据均以数据文件 的 形 式 存 放 , 因 此 MATLAB 可 利 用 其 文 件 读 取 函 数 。 如 fopen()(打开一个文件)、fgetl(从文件获取字符数据)、fclose(关 闭一个文件)函数等。
3
所以,使用MATLAB实现辨识计算要比一般的高级语言方便、 快速。更值得一提的是还可方便地将它们作为计算引擎,在其 他的应用程序中使用。
在MATLAB中,涉及系统辨识领域的工具箱较多,此处仅 对系统辨识工具箱、遗传算法工具箱与系统参数辨识相关的内 容作一简单介绍,以期达到对其更好了解和使用的目的。由于 工具箱提供的方法和函数繁多,在使用时还需借助MATLAB的 在线帮助对其进一步了解。
一旦数据输入到MATLAB的工作空间后,便可对其进行相应 的预处理。预处理完成后,进行辨识前,应将参与辨识的输入、 输出数据连同相应的参数合并成为一个数据结构,以便各类辨 识函数调用。定义数据结构的方法可使用iddata()函数,下面是 一个生成单输入、单输出系统辨识数据结构最简单的例子:
data = iddata(y,u,Ts);
3. 模型辨识 MATLAB提供一些列的函数,用于系统的模型辨识,包括线 性的、非线性的、连续的、离散的、参数的、非参数的模型等。 在表3-1中,给出了MATLAB系统辨识工具箱支持的常用辨识 函数及它们所适用的数学模型。
MATLAB的这些辨识函数基本上采用的都是递推算法,因此, 只要满足信号的持续激励条件,一般都可得到收敛的解。但能 否得到真实解和满意的辨识效果,还取决于系统各频带下的信 息能否充分地被激励,以及试验方法和辨识方法的选取等。
以前通常使用高级程序设计语言编程进行计算。但由于运 算量很大,使用一般的高级语言编程过于繁琐,要验证辨识结 果的正确性要花费相当多的精力,甚至超过代码编写本身,因 此,研究周期较长。对于离线辨识而言,最好的方法应该是直 接使用MATLAB提供的相关工具,如系统辨识工具箱、遗传算 法工具箱以及信号处理工具箱等。这些工具箱不仅反映了在世 界范围内这些领域最先进的研究成果,也提供了丰富的可直接 调用的函数或GUI用户界面,通常可起到事半功倍的效果。另 外,MATLAB内含的编程语言M语言简单易学,功能强大,使 用它可十分方便地实现各种复杂的运算和生成所需图形。
MATLAB的文件读取函数与C语言的相应函数相类似,但语 句效率更高。读入的数据应以矩阵的形式存放。对于输入数据 矩阵,应为T行(每个输入信号的长度),U列(系统输入的个数)。 对于单输入系统,输入数据应为具有T个元素的列向量。
5
对于输出数据矩阵,应为T行(每个输出信号的长度),Y列(系统 输出的个数)。对于单输出系统,输出数据应为具有T个元素的 列向量。
(1) 不使用Mi参数:调用格式为MODEL = pem (DATA)。在这 种情况下,返回的模型为一默认的状态空间模型以及一个输入 端的纯延迟,模型的阶数、纯延迟的大小均由pem函数确定。 (2) Mi = nx:调用格式为MODEL = pem (DATA, Mi)。模型返 回一具有nx阶的系统状态空间模型。 (3) Mi = [na nb nc nd nf nk]: 调用格式为MODEL = pem (DATA, Mi)。模型返回一个一般化的系统离散时间模型(也称多项式模 型)。即:
11
其中,MODEL为返回的估计(辨识)模型,可以是离散时间模型 (包括相应的噪声模型),状态空间模型,连续的传递函数模型 等。不仅包含所估计的模型结构和参数,也包含辨识数据与估 计的模型间的协方差(MODEL. NoiseVariance),用于评价辨识 的效果及有效性;DATA 为用Iddata() 函数创建的用于辨识的 数据结构;Mi是用于定义辨识模型的形式和结构,这是一个定 义方法非常灵活的参数,可以是下述方法之一:
指定待辨识模型为包含有两个实数极点、有纯时间延迟、不包
括实数零点、没有复数极点的连续传递函数模型。注意,在调 用该函数后,所生成的模型参数为 Kp, Tp1, Tp2, Tp3, Tw, Zeta, Tz, Td,对应的传递函数通用模型为
13
G(s)
பைடு நூலகம்Kp
1 Tzs
s(1 Tp1s)(1 2 s
(Tws)2 )
相关文档
最新文档