matlab 最小二乘法辨识,[转载]自编最小二乘法的Matlab参数辨识程序(含实例)

2023-11-24 06:59

本文主要是介绍matlab 最小二乘法辨识,[转载]自编最小二乘法的Matlab参数辨识程序(含实例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

%

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

%仅针对二阶系统:)

%出处:http://blog.sina.com.cn/xianfa110

%=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=

%Inputs:

%=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=

%Y = nX1 vector of your model output

%U = nX1 vector of your model input

%Ts = sample time

%

%=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=

%Outputs:

%=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=

%sysd = discrete-time transfer function identified

%sys = continuous-time transfer function identified

%err = error

%

if nargin<3 || nargin>3

error('Must be three inputs!');

end

if length(Y)~=length(U)

error('length of inputs must be equal.');

end

n=length(U);

Y=reshape(Y,n,1);

U=reshape(U,n,1);

theta=[0.1;0.1;0.1;0.1;0.1];

P=2^25*eye(5);

R0=1;

for m=3:n

X=[Y(m-1) Y(m-2) U(m) U(m-1) U(m-2)]';

alfa=1/(R0+X'*P*X);

L=alfa*P*X;

theta(:,m-1)=theta(:,m-2)+L*(Y(m)-X'*theta(:,m-2));

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);

%%====================================================

exaple:

对于以下模型:

a4c26d1e5885305701be709a3d33442f.png

运行之后,数据通过Scope传递到工作空间,方法参见Simulink利用Scope输出及绘制仿真波形技巧。

输入以下代码:

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

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

得到结果如下:

Transfer function:

-4.314e-009 z^2 + 8.784e-005 z + 4.362e-005

-------------------------------------------

z^2 - 1.975

z + 0.9753

Sampling time: 0.001

Transfer function:

-1.12e-005 s^2 - 0.04417 s + 133.1

----------------------------------

s^2 + 25.02 s - 0.008906

e =

-6.8120e-011

相关文章:

这篇关于matlab 最小二乘法辨识,[转载]自编最小二乘法的Matlab参数辨识程序(含实例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/421448

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal