最近在做关于过热气温的动态建模问题。有现场运行的历史数据,要找出导前区和惰性区的传递函数。

对这类算法了解不多,程序读起来比较吃力,所以就转来一篇完整的辨识程序,在原有基础上进行了简化,并稍加注解一下,也能让有共同需要的朋友少花点时间。

function [sysd,sys,err]=ID(Y,U,Ts)

%基于递推最小二乘法的参数辨识程序

%仅针对二阶系统(工业对象大都是高阶系统,用起来很复杂,所以最终还是要降阶成为二阶近似系统)

%Inputs: Y是模型输出值,U是模型输入。二者都作为辨识程序的输入

%Outputs: sysd=离散传函,sys=连续传函,err=error

n=length(U);

Y=reshape(Y,n,1); %输出和输入的维数肯定是要对齐的,无须多言

U=reshape(U,n,1);

theta=[0.1;0.1;0.1;0.1;0.1] %注意这是一个5*1矩阵

P=2^25*eye(5); %P,和theta都是递推参数初始值,每一步递推都会改变

R0=1; %就是一个赋值

for m=3:n %递推过程

X=[Y(m-1)

Y(m-2) U(m) U(m-1)

U(m-2)]'; %X就是递推最小二乘法的算法公式中的Φ(k)

alfa=1/(R0+X'*P*X); %计算因子

L=alfa*P*X;

theta(:,m-1)=theta(:,m-2)+L*(Y(m)-X'*theta(:,m-2)); %theta=θ %每迭代一次,theta就增加一列,新增加的那一列就是最新的参数估值。

P=P/R0-alfa*P*X*X'*P;

err=Y(m)-X'*theta(:,m-2); %计算实际输出值和估值输出的误差

if abs(err)<=1e-10

break;

end

end

m=length(theta(1,:));

result=[-theta(1:2,m);theta(3:5,m)]; %对照着算法公式就明白了

t=1:m;

figure;

plot(t,theta(1,:),t,theta(2,:),t,theta(3,:),t,theta(4,:),t,theta(5,:));

legend('th1','th2','th3','th4','th5');

num=[result(3),result(4),result(5)];

den=[1,result(1),result(2)];

sysd=tf(num,den,Ts);

[n,d]=d2cm(num,den,Ts,'tustin');

sys=tf(n,d);

输入以下代码即可:

Y=data(:,3);U=data(:,2);

[sysd,sys,e]=ID(Y,U,0.001);

函数的递推matlab,关于递推最小二乘法辨识参数的matlab编程(含注释)相关推荐

  1. matlab导入s2p,如何将S参数导入matlab中可用的数据文件

    如何将S参数导入matlab中可用的数据文件 导出成*.txt,就可以 Q: The export function of CST MWS support data format as Magnitu ...

  2. matlab gui从模型里获取参数程序,matlab gui 中参数传递的问题

    用m文件建GUI界面,在inputbutton 中输入数据,传递给outputbutton,利用该数据.为什么总显示参数不够错误? 错误提示如下: Fresnel_GUI1 输入参数的数目不足. 出错 ...

  3. matlab 广义最小二乘,广义最小二乘辨识的matlab实现

    最近在做系统辨识的工作,经典的方法林林种种,最小二乘诸法最是好用.我接到的任务是"广义最小二乘辨识"的实现. 于是我查阅了网络上的资料,几乎找到了所有的辨识方法的matlab源码, ...

  4. 递推算法与递推套路(算法基础篇)

    联系我们:有道技术团队助手:ydtech01 / 邮箱:[ydtech@rd.netease.com] 相信了解算法同学经常会说动态规划太难了,看到题目完全不知从何下手,或者是说"一看题解就 ...

  5. 【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )

    文章目录 一.递推方程 内容概要 二.递推方程 定义 三.递推方程 示例 四.斐波那契数列 ( Fibnacci ) 一.递推方程 内容概要 递推方程 内容概要 : 递推方程定义 递推方程实例 常系数 ...

  6. 【算法讲26:特征方程】求齐次线性一阶递推与二阶递推通项公式 | HDU 2021多校一 Pass!

    [算法讲26:特征方程]求一阶递推与二阶递推通项公式 引入 齐次线性一阶递推 齐次线性二阶递推 题目解法 下文中详细证明略,可以看 [数列]特征方程与特征根 引入 HDU 2021多校一 Pass! ...

  7. 基于遗忘因子递推最小二乘法辨识一阶RC等效电路模型

    %% 基于一阶RC等效电路模型实现不同倍率下电模型参数辨识 clear clc%% 载入实验数据 % 导入hppc实验数据 load('hppc_pulse_25deg') temp = hppc_p ...

  8. java递推_Java算法-递推算法思想

    递推算法是常用的算法思想,在数学计算等方面有着广泛的应用.递推算法适合有着明显公式的规律场合. 一.递推算法基本思想 递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果.递推 ...

  9. 递推java_Java算法-递推算法思想

    递推算法是常用的算法思想,在数学计算等方面有着广泛的应用.递推算法适合有着明显公式的规律场合. 一.递推算法基本思想 递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果.递推 ...

最新文章

  1. android studio快捷键大全
  2. linux常用的内核镜像格式
  3. 怎样导入python colorama模块_使用git子模块导入python项目
  4. 2018-2019-2 20175235 实验四《Android开发基础》实验报告
  5. jenkins 启动_通过http请求启动jenkins任务
  6. eclipse 恢复默认窗口
  7. InnerJoin分页导致的数据重复问题排查
  8. 用Ruby读取Excel文件
  9. 分支限界法之布线问题
  10. Matlab 图像平移、旋转、缩放、镜像
  11. 微支付开发部分代码示例
  12. Python--快速爬取千张高清壁纸
  13. 微信公众号开发python库_轻松实现python搭建微信公众平台
  14. 24个希腊字母 大小写 读音
  15. SIMBOSS:物联网业务如何应用领域驱动设计?
  16. 35、StylizedNeRF Consistent 3D Scene Stylization as Stylized NeRF via 2D-3D Mutual Learning
  17. 网易云音乐常用API浅析
  18. Win10隐藏状态栏图标的方法
  19. 支付宝单笔转账到支付宝账户(用于分成或者退款)
  20. Nuxt配置百度统计,并公开统计解决

热门文章

  1. docker desktop ubuntu镜像_「Docker」 - 镜像仓库
  2. [scala-spark]12. RDD行动操作
  3. 技术与管理并重才能走的更远
  4. 关于c#中 的动态加载程序集
  5. 获取dbgrid的行索引
  6. Delphi2010组件/控件安装方法
  7. javascript 调用c#变量实例
  8. 23种设计模式C++源码与UML实现--责任链模式
  9. linux-内核启动流程分析
  10. 基于ARM的linux嵌入式操作系统