MATLAB-RBF神经网络例1

news2024/12/27 13:19:22

采用所描述的系统中﹐假设真实质量为m=2,在仿真中,初始值为,采用的自适应律为:

设定参数为y=0.5,=10,=25,=6,分别设定参考位置为r(t)=0,r(t )=sin(4t) ,初始条件为

图1.1和图1.2为指令r(t)=0时控制效果,图1.3和图1.4为指令r(t)=sin(4t )时的控制效果。

在本例中,在两种情况下﹐位置跟踪误差收敛到零,而参数估计误差收敛仅适用于后一种情况。第一种情况下,如图1.2所示,参数估计误差不收敛,其原因为跟踪收敛性能不仅取决于真实的m值。第二种情况下﹐如图1.3所示,由于跟踪指令的频带足够丰富,参数估计误差收敛于真实值,其原因为跟踪收敛性能取决于真实的m值。

在神经网络自适应控制中,神经网络通常用于逼近未知的非线性系统。基于同样的原因逼近误差的收敛性往往无法实现,但这不影响闭环系统的稳定性。图1.4为r(t)=sin(4t)时未知负载的参数估计,此时m=2。

仿真图

控制设计主程序(chap_1ctrl.m)

function [ sys, x0 , str,ts] = spacemodel( t,x, u, flag)switch flag,

case 0,

[ sys, x0 , str,ts ] = mdlInitializeSizes;

case 1,

sys = mdlDerivatives(t,x, u);

case 3,

sys = mdlOutputs( t,x, u);

case { 2,4,9}

sys = [ ];

otherwise

error( [ 'Unhandled flag = ', num2str( flag)]);

end

function[ sys,x0 , str,ts ] = mdlInitializeSizessizes =simsizes;

sizes. NumContStates= 1;

sizes. NumDiscstates= 0 ;

sizes.NumOutputs= 2 ;

sizes. DirFeedthrough= 1 ;

sizes. NumInputs=6

sizes.NumSampleTimes= 0;

sys = simsizes( sizes) ;

x0= [ 0];

str = [ ]; ts = [ ];

function sys = mdlDerivatives(t,x, u)

xm = u( 1) ;

dxn = u(2);

ddxm = u( 3) ;

xl = u( 4);

dx1 = u( 5);

e = x1- xm;

de = dx1 - dxm ;

nmn = 6 ;

s = de+nmn * e;

v = ddxm- 2*nmn*de - nmn ^2*e;

gama = 0.5;

sys(1) = - gama * v* s ;

function sys = mdlOutputs( t,x,u)xm = u( 1);

dxm = u( 2);

ddxm = u( 3) ;

xl = u(4 ) ;dxl = u(5);

e = x1- xm;

de = dx1 - dxm;

nmn = 6;

mp = x( 1);

ut= mp * ( ddxm - 2*nmn * de - nmn ^2 * e) ;

sys(1)= mp;

sys(2) = ut;

被控对象程序(chap_1plant.m)

function [ sys,x0 , str,ts] = spacemodel ( t,x, u,flag)

switch flag

case 0,

[ sys,x0 ,str,ts ] = mdlInitializeSizes;

case 1,

sys = mdlDerivatives( t,x, u);

case 3,

sys = mdlOutputs(t,x, u) ;

case {2,4,9 }

sys =[ ];

otherwise

error( [ 'Unhandled flag = ' , num2str( flag)]);

end

function [ sys, x0 , str,ts ] = mdlInitializeSizes

sizes = simsizes;

sizes. NumContStates

= 2;

sizes. NumDiscStates

= 0;

sizes. NumOutputs

= 3;

sizes.NumInputs

= 2;

sizes. DirFeedthrough

= 0 ;

sizes. NumSampleTimes= 1;sys = simsizes( sizes) ;

x0 =[ 0.5,0];

str = [ ]; ts = [ 0 0];

function sys = mdlDerivatives( t,x, u)m= 2;

ut = u( 2);

sys( 1) = x( 2);

sys(2)= 1/m * ut;

function sys = mdlOutputs( t,x, u)

m= 2;

sys( 1) = x(1);

sys(2) = x( 2);

sys( 3) = m;

指令信号程序(chap_linpot.m)

function [ sys, x0 , str,ts] = spacemodel ( t,x, u, flag)

switch flag,

case 0,

[ sys, x0 , str,ts ] = mdlInitializeSizes;

case 1,

sys = mdlDerivatives(t,x, u);

case 3,

sys = mdlOutputs(t,x,u) ;

case {2,4,9}

sys = [ ];

otherwise

error( [ 'Unhandled flag = ' , num2str( flag) ]);

end

function [ sys,x0 , str,ts] = mdlInitializeSizes

global M

M= 2;

sizes = simsizes

sizes. NumDiscStates=0 ;

sizes.NumOutputs= 3;

sizes. NumInputs= 0 ;

sizes.DirFeedthrough= 1 ;

sizes. NurmSampleTimes= 0 ;

sys = simsizes(sizes) ;

x0= [ 0.5,0];

str = [ ];ts = [ ];

function sys = mdlDerivatives( t,x, u)

global M

if M== 1

r = 0;

elseif M == 2

r = sin( 4 * t);

end

nmn1 = 10;

nmn2 = 25;

sys( 1) = x( 2);

sys(2) = - nmn1 * x( 2) - nmn2 * x( 1) + nmn2 * r;

function sys = mdloutputs( t,x, u)

global M

if M== 1r = 0;

elseif M == 2r = sin( 4 * t);end

nmn1 = 10;nmn2= 25;

xm = x( 1) ;dxm = x( 2);

ddxm = - nmn1 * x( 2) - nmn2 * x(1) + nmn2 * r;

sys( 1) = xm ;

sys(2) = dxm;

sys( 3) = ddxm ;

画图程序(chap_1plot.m)

close all;

f igure( 1);

plot( t,y( : ,1 ) ,'r',t,y( :,4),'k: ", 'linewidth',2);xlabel( 'time(s) ') ;

ylabel( 'position signal ' );

legend( 'ideal position signal' , 'position tracking' );

figure(2);

plot(t,p( :,3) , 'r ',t,p( :,4), 'k : ', 'linewidth',2);xlabel( 'time(s) ' ) ;

ylabel( 'estimation value' );

legend( 'True value,m ' , 'estimation value' ) ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

verilog学习笔记- 12)触摸按键控制LED灯实验

目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证: 简介: 触摸按键主要可分为四大类:电阻式、电容式、红外感应式以及表面声波式。根据其属性的不同,每种触摸按键都有其合适的使用领域。 电阻式触摸按键&#…

响应式与观察者模式

什么是响应式?响应式 是Vue 最独特的特性之一,是非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。我们也叫他双向绑定。如果想要更改视图,只要直接更改对应属性的值即可&#xff…

从隔壁老王开始的信号处理入门

诸神缄默不语-个人CSDN博文目录 我是从GNN被扔到NLP然后又做起了GNN现在又被喊去搞时间序列分类,所以现在才开始看信号处理(因为我开始做GNN以来,GNN就以图域而非谱域为主了,所以那时我没怎么看过信号处理)。 所以写个…

RabbitMQ消息队列(三):任务分发机制

在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题。在实际的应用场景中,这是远远不够的。从本篇文章开始,我们将结合更加实际的应用场景来讲解更多的高级…

jetson nano上编译与使用西门子PLC通讯库snap7

文章目录一.西门子snap7介绍二.西门子S7通讯介绍三.jetson nano编译snap7库四.Qt Cmake导入snap7库五.snap7主要函数说明1.与PLC建立连接2.读写PA区变量3.读写MK区变量六.通讯程序示例一.西门子snap7介绍 Snap7 是一个基于以太网与S7系列的西门子PLC通讯的开源库。支持包括S7系…

2023美赛数学建模ABCDEF题思路模型代码

占个位置吧,开始在本帖实时更新赛题思路代码,文章末尾获取! 持续为更新参考思路 赛题思路 会持续进行思路模型分析,下自行获取。 A题思路: (比赛开始后第一时间更新) B题思路:…

《算法分析与设计》复习笔记

目录 一、算法的基本概念 1.1 算法的定义 1.2 算法的“好坏”如何衡量? 1.3 描述算法的时间复杂度 ⭐ 1.4 如何评价算法 二、 分治法 2.1 分治法的求解步骤 2.2 平衡的概念 2.3 递归式解法 2.3.1 主定理法 ⭐ 2.4 分治法的使用条件 2.5 分治法实例 2.5…

助力安全作业生产,基于轻量级YOLOv6s开发实践反光衣检测识别分析系统

在很多实际作业生产场景中,出于对安全的考虑,施工作业等操作都是要求穿戴反光衣的,这个主要是为了保护人身安全,但是很多时候工程作业场景下因为实际种种的原因工人实际作业操作的时候很多人并没有按照要求穿戴反光衣这就给安全生…

OPTEE安全存储

本文主要介绍OPTEE的安全存储技术,翻译自官方文档:Secure storage — OP-TEE documentation documentation (optee.readthedocs.io) 一、背景 OP-TEE中的安全存储是根据GlobalPlatform的TEE Internal Core API(这里称为可信存储)…

2023/1/13总结

今天学习了链式向前星和唯一分解定理(数论)。 链式向前星 链式向前星是一种存储图的方法,在此之前我们学到过存储图的方式:邻接表以及邻接矩阵,邻接矩阵浪费了很大的空间,而邻接表 写起来的代码有一点点…

微信小程序wxml的数据和事件的绑定,以及条件和列表的渲染

文章目录1.数据绑定的基本原则在data中定义页面的数据2.事件绑定bingtap的语法格式:在事件处理函数中为data中的数据赋值事件传参bindinput的语法格式实现文本框和data之间的数据同步1.定义数据2.渲染结构3.美化样式4.绑定input事件处理函数3.条件渲染hiddenwx:if与hidden的对比…

数据库 表设计 MySQL

表设计 约束 为了保证入库数据的合理性,添加的各种规则。 约束的分类 准备测试用的表格: CREATE TABLE emp ( id INT, -- 员工id,主键且自增长 ename VARCHAR(50), -- 员工姓名,非空且唯一 joindate DATE, -- 入职日期&…

【uniapp】渲染列表数据删除项导致每项数据重置的问题解决方案

开发uniapp项目,使用的是JavaScript Vue写法,操作wList数组列表更新的时候,如果每一项都带input 或 radio组件,要操作移除的话,那么组件的输入数据会被清除重置,若不希望这样,那应该怎么做才好呢…

设计模式相关内容介绍—软件设计原则(六个)

在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。 目录 1.开闭原则 2.里氏代替原则 3.依赖倒转原则 4.接…

dvwa中的文件包含攻击

环境:dvwa: 192.168.11.135 dvwa版本: Version 1.9 (Release date: 2015-09-19)kail机器:192.168.11.156一、什么是文件包含漏洞?为简化代码,会把重复的code内容单独写到一个页面文件,然后再需要调用重复内容的页面中…

C语言:初识C语言

目录前言1. 什么是c语言呢2. 第一个c语言程序2. 数据类型3. 变量和常量3.1 变量3.1.1 变量的定义3.1.2 变量的分类3.1.3 变量的使用3.1.4 变量的作用域和生命周期3.2 常量4. 字符串、转义字符、注释4.1 字符串4.2 转义字符4.3 注释5. 选择语句6. 循环语句7. 函数8. 数组9. 操作…

学习笔记——keep-alive缓存组件,再次返回组件data数据重置

前言:使用keep-alive缓存组件,当再次返回该组件后,希望其组件中的数据或状态,保持上次离开该组件时的情况。 一、当前组件树 希望缓存HomeMain组件的状态。 二、错误处理 我在HomeMain的祖先组件HomeLayout中,写了如下…

sqlplus 连接数据库

终端直连 Oracle 数据库 ORA-12162 错误 出于各种网络原因,无法直连数据库,但又必须查询数据库数据 我们只能选择直连数据库的服务器 然后通过 sqlplus 连接 Oracle 从配置文件里获取这样一段信息 urljdbc:oracle:thin:192.168.1.3:1521:testdb use…

【SpringCloud08】SpringCloud Consul服务注册与发现

1.Consul简介 1.1是什么 官网 Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用Go 语言开发 提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位…

基于MPLS-V**多分部互访的ensp企业网络规划与设计_ensp综合实验

作者:BSXY_19计科_陈永跃BSXY_信息学院注:未经允许禁止转发任何内容基于MPLS-V**多分部互访的ensp企业网络规划与设计_ensp综合实验前言及技术/资源下载说明( **未经允许禁止转发任何内容** )插曲:基于eNSP中大型校园/…