系统辨识的Matlab实现方法(手把手)
更新时间:2023-05-30 15:32:01 阅读量: 实用文档 文档下载
- 系统辨证脉学推荐度:
- 相关推荐
最近在做一个项目的方案设计,应各位老总的要求,只有系统框图和器件选型可不行,为了凸显方案设计的高大上,必须上理论分析,炫一下“技术富”,至于具体有多大实际指导意义,那就不得而知了!本人也是网上一顿百度,再加几日探索,现在对用matlab实现系统辨识有了一些初步的浅薄的经验,在此略做一小节。
必须要指出的是,本文研究对象是经典控制论理最简单最常用的线性时不变的siso系统,而且是2阶的哦,也就是具有如下形式的传递函数:
1 G(s) 22
Ts 2 Ts 1
本文要做的就是,对于有这样传递函数的一个系统,要辨识得到其中的未知数T, ξ!!这可是控制系统设计分析的基础哦,没有系统模型,啥理论、算法都是白扯,在实际工程中非常重要哦! 经过总结研究,在得到系统阶跃响应实验数据之后(当然如果是其他响应,也有办法可以辨识,在此还是只讨论最简单的阶跃响应实验曲线,谁让你我是菜鸟呢),利用matlab至少可以有两种方法实现实现(目前我只会两种,呵呵)!
一、函数法
二、GUI系统辨识工具箱
下面分别作详细介绍!
一、 函数法
看官别着急,先来做一段分析(请看下面两排红*之间部分),这段分析是网上找来的,看看活跃一下脑细胞吧,如果不研读一下,对于下面matlab程序,恐怕真的就是一头雾水咯!
*******************************************************************************
1G(s)可以分解为:G(s) 2
T(s 1)(s 2)
12
1 1
T
其中,
12
2 1
T
1、 2都是实数且均大于零。
则有:
1 2
T ,
12212
1
传递函数进一步化为:
1 2
G(s)
(s 1)(s 2)
因此,辨识传递函数就转化为求解 1、 2。
当输入为单位阶跃函数时,对上式进行拉普拉斯反变换,得系统时域下的单位阶跃响应为:
y(t) 1
即 1
2 2 1
e
1t
e
1t
1 2 1
e
2t
e 2t
y(t)
2 2 1
1),得
1 2 1
令 1=k 2(k
k 2t1 k 2t
1 y(t) e e
k 1k 1
k 2t 1 (k 1) 2t e 1 e k 1 k
对上式两边取以e为底的对数得
k 1 (k 1) 2t ln 1 y(t) ln 2t ln 1 e
k 1 k 1 (k 1) 2t
0当t 时,ln1 e,则上式化简为
k
kln 1 y(t) ln 2t
k 1
该式的形式满足直线方程
y*(t) at b
其中,
k
(k 1) y(t)=ln 1 y(t) ,a 2,b lnk 1
*
通过最小二乘算法实现直线的拟合,得到a,b的值,即可得到 1、
2的值,进而可得系统的传递函数。
***************************************************
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*')
打开matlab,新建一个Function,把上述程序段拷进去,保存,运行~~~~~~~~~,运行结果:
系统的传递函数为
0.54034
G(S)
(S 1.126)(S 0.4797)
很顺利吧?先高兴一个!问题接着马上就来了,上面这个例子,这个传递函数的极点刚好都是负实数,因此辨识得很顺利,但是如果系统是欠阻尼系统,也就是如果传递函数的根是复数,那么上述函数段,就无能为力咯,会出现说“matlab无法处理增益为复数情况之类··” 例如
2
G(S)
(S 1 j)(S 1 j)
对于这个系统,若果用simulink做一下阶跃响应,再把实验数据代入上述函数段,那就不行咯!怎么办呢,只能另辟蹊径了!
二、(System Identification Tool)系统辨识工具箱
早听说matlab博大精深,神通广大了,于是乎我确定肯定有更简单、直观、强大的工具来完成这小儿科把戏。查资料琢磨之后,我做了个小实验,在simulink里验证了该种方法。该方法的大原则是:在确定了系统的输入输出数据(两个列向量N×1形式,如果是1×N,会提示出错!)之后,设计好一定的辨识原则(比如说是2阶?3阶?,传递函数是零极点形式,还是带阻尼形式,等等),然后就交给强大的matlab,得到辨识结果。Step by step,plz! Step1、 建立模型获取系统输入输出数据
图1
图1系统的输入是阶跃信号,用Scope1监视,并输出到workspace(这步不会的自己百度哦),采样周期是0.1s,得到输入变量u(101×1的矩阵);本人在系统的阶跃响应上叠加了一白噪声,当然也可以不加噪声,加了噪声就是期望更真实的模拟实际情况,白噪声参数设置见图2
图2
同样在Scope2监视,也将结果输出到workspace,得到响应数据y(同样也是101×1的矩阵) Step 2、进入辨识工具箱&设置辨识规则
直接在command window 输入 ident,回车,进入辨识工具箱图
3
图3
点击import下拉菜单,选时域数据time domain data,见图4
图4
在下图5红色圈区域输入之前得到的系统输入和输出数据,u和
y
图5
在下图6绿色圈内输入数据的一些信息,因为之前模型中,阶跃起点我是放在0s处的,这里也设置0,如果前面模型仿真是1s,这里应该也是1s;采样时间是0.1s,根据实际情况设置统一哦
图6
设置完之后,点击import此时界面变成图
7
图7
如果在下图8勾选红框这个选项,就会出现我们刚才设定输入输出数据的曲线,如图9所示,其他勾选项是频域的分析和显示,暂不用它。
图
8
图9
看看与我们实际设置的输入输出是否符合,如果符合,那么我们离成功就不远咯,如果发现异常,那再好好检查一遍,直到确保数据导入没有问题!
下面两段红色斜杠之间的内容,对于本实验,可以直接跳过,看一下对后续复杂模型的处理有好处哦,也算全面熟悉一下工具。 ///////////////////////////////////////////////////////////
到这接着选preprocess也就是对数据进行预处理了,下拉菜单中有很多种处理方法和手段,有这个心思的人可以挨个试一下功能。图
10
图10
预处理的对象是working data中的数据,每进行一种预处理在左边就会有新的数据生成,这时只要将新的数据移动到working data的那个方框,就可以将working data换成你所想处理的数据了,可以这样多次进行处理,得到你最终想用来辨识的数据和用于验证的数据(不需要的数据可以拖到那个trash里面删除,就是回收站了,也可以从回收站中找回的)
接下来就是辨识了,首先把辨识用的数据拖到working data那个方框,再把验证的数据拖到validation data那个方框,这个validation data就是最原始数据稍作处理得到的一个更接近理论模型的对象数据,在这实验里,本人用的就是默认数据,也就是不做任何preprocess处理。
///////////////////////////////////////////////////////////
点下拉菜单estimate,选你想要的模型,在弹出的对话框中设定参数,图11
图11
这里边的模型种类比较多,有线性的、非线性的、状态空间的、经典传递函数形式的等等,我们所选的就是图中红色方框process models,单击。弹出如下界面图12!
图12
在本实验中,我们做如下设置,见图13红框标出部分。
图
13
然后点击最下方Estimate,就有模型生成了。图14
图14
先勾选上图绿色框选项,看到了什么?给出了拟合率,best fits 98.72有木有??传递函数具体的数值,双击上图红色框,见图15?
图15
在右边的数据栏中;也就是model views中了,下面有很多可以选择,每选一个就可以生成一幅对应的图,是由用于验证的数据生成的。把模型拖到to workspace那个方框,再去看workspace,多的那个变量就是你所辨识出的模型了
注意:在某个模型或某组数据上点一下,线变细了就不会在图中显示出来了!!!!!!!!
最后再一次提出,上述分析并不一定完全正确,可能有些概念并不清晰可靠,当然还有很多功能并没有被发掘,可以确定的是解决这个问题的两个大方向没有问题,若想做到精益求精,还需要再仔细研究斟酌哦!
正在阅读:
系统辨识的Matlab实现方法(手把手)05-30
智能交通灯控制系统设计文献综述07-10
试题库建设要求07-10
国家电网公司施工项目部标准化工作手册 110(66)千伏变电工程分册05-11
给领导的祝酒词集锦02-09
XX变电站10KV高压开关柜大修施工方案03-03
我的小手拉大手故事作文800字06-26
期末考试报告 - 图文12-21
施工机械需用量的综合计算 - 图文01-26
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 辨识
- 手把手
- 实现
- 方法
- Matlab
- 系统
- 三毛作品及经典语录
- 1-4月价格暴跌我国铁矿石进口显著下滑
- 多糖含量测定方法比较
- 后浪互联网精品资料之——国内几大B2B电子商务网站经营模式比较与分析
- 《邹忌讽齐王纳谏》过关练习
- 4一元二次方程的根的判别式及根与系数的关系(名师总结)
- 2011世界500强企业名单
- 加强财务审计工作 推进宗教场所管理规范化
- 快快乐乐教识字,轻轻松松学语文
- 高二下学期开学主题班会
- 在很多的礼仪中,丧葬礼仪和我们大家有着密切的关系。人生自古谁无死,所谓
- 可再生能源的利用与可持续发展
- 高分子复合防水卷材施工工艺
- 经济生活主观题2
- 毕节地区小麦育种新构想
- 09年公务员考试行测真题分类汇总——常识判断
- 2012广东省乡镇公务员考试试题
- 结合本专业谈谈科研选题的原则和方法
- 毕业设计论文 数字功放
- 第三章功能学派翻译理论代表人物及作品