当前位置: 首页 > news >正文

Matlab simulink建模与仿真 第十六章(用户定义函数库)

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili

一、用户定义函数库中的模块概览

        注:MATLAB版本不同,可能有些模块也会有差异,但大体上区别是不大的。

二、Fcn/Matlab Fcn模块

1、Fcn模块

        双击Fcn模块,在对话框中可配置一个表达式,其中用u表示输入(u可以是向量甚至是矩阵),表达式可使用MATLAB中的函数,表达式的计算结果即为Fcn模块的输出。

2、Matlab Fcn模块

(1)该模块的作用和Fcn模块差不多,不过它的可操作性更强,Fcn模块根据表达式求结果,而Matlab Fcn模块根据函数求结果,另外该模块的边框是粗黑线条,意味着编译模型时该模块是独立编译的。

(2)双击该模块可打开一个代码编辑窗口,在这里可以编辑该模块中的函数。

三、S函数(仅了解)

1、S函数简介

(1)S函数的全称为system-functions(系统函数),它主要用于扩展simulink环境(扩展simulink模块的用法)。

(2)S函数可使用多种语言进行编写,如C语言、C++、Python、MATLAB、Fortran等,使用C语言、C++和Fortran这些编译型语言需要借助mex文件。

(3)S函数通过特定语法调用simulink中提供给该S函数的应用程序接口,通过该接口,S函数可以和simulink的计算引擎进行交互。

(4)通过S函数可实现连续系统、离散系统和混合控制系统。

2、S函数相关模块概述

(1)(Level-1 M-file)S-Function模块:

①该模块本身能调用系统函数所实现的功能比Level-2 M-file S-Function模块少得多,其存在的意义是为了兼容旧版本的MATLAB。

②该模块主要是用标志位flag来实现相应的功能的,内部使用switch语句对标志位进行判断,针对各种情况进行代码的编写。

③S函数模板有几个默认参数t、x、u(系统输入信号)和flag,S-Function模块会自动将它们传递给S函数,程序员可以在“S-function parameters”字段中指定其它自定义的输入参数值(如自定义参数不止1个,用逗号进行分隔)。

(2)Level-2 M-file S-Function模块:

①该模块使用回调函数的方式,在运行过程中通过调用相应的变量来实现函数调用的功能。

②该模块允许程序员使用MATLAB创建自定义模块,这些模块可以有多个输入和多个输出,并能够处理由simulink模型产生的任何类型的信号。

③Level-1 M-file S-Function模块的S函数引导行(即第一行)中有非常多的参数和返回值,而Level-2 M-file S-Function模块的S函数引导行只有一个函数参数block,且没有返回值,同时在引导行下方调用setup函数(参数为block)建立一个局部的block对象作为运行时对象,接下来,S函数的执行都围绕这个block对象。

④Level-2 M-file S-Function模块的S函数较Level-1 M-file S-Function模块的S函数更为复杂,这里不再进行过多介绍,具体可看官方的帮助文档。

(3)S-Function Builder模块:

①该模块可以使用C语言和C++编写S函数,适用于初次使用C语言或者C++编写S函数的编程人员。

②使用C语言和C++编写S函数的过程比较复杂,本章不会对此进行深入介绍。

3、S函数使用示例

(1)模型如下图所示,常量5为系统的输入信号u。

(2)以下是根据Level-1 M-file S-Function模块S函数模板改制的函数,函数名为mysfun,其中gain和bias为自定义输入参数,在本例中分别定为3和4。

function [sys,x0,str,ts,simStateCompliance] = mysfun(t,x,u,flag,gain,bias)         %gain和bias为非模板参数,其它均为S函数模板需要的参数
%t-仿真时间,x-状态变量(针对存在状态方程的情况,也就是系统可进行微分和积分),u-系统输入,flag-标志位
%sys-系统输出,x0-状态初始值,str-保留(暂无作用),ts-[采样周期 采用时间偏移值](连续系统中采样周期为0)
%%%%%%simStateCompliance-允许取值有“DefaultSimState”(默认仿真状态)、“HasNoSimState”(无仿真状态)%和“DisallowSimState”(禁止仿真状态),如不进行设置,则默认为“UknownSimState”(未知仿真状态)
%%%%%
switch flag     %判断标志位,区分各种情况case 0        %标志位为0,进行初始化[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;case 3        %根据系统输入求系统输出sys=mdlOutputs(t,x,u,gain,bias);case{1,2,4,9} %未使用的几种情况sys=[];otherwise     %系统出错DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end%初始化函数mdlInitializeSizes
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;           %生成S函数使用的结构体
sizes.NumContStates  = 0; sizes.NumDiscStates  = 0;   %连续状态数目和离散状态数目
sizes.NumOutputs     = 1; sizes.NumInputs      = 1;   %输出端口数目和输入端口数目
sizes.DirFeedthrough = 1;   %是否有前馈(0代表有,1反之)
sizes.NumSampleTimes = 1;   %采样时间的数目(至少需要一个采样时间)sys = simsizes(sizes);      %结构体返回
x0  = [];                   %初始状态
str = [];                   %保留参数(暂时不用)
ts  = [0 0];                %[采样周期 采用时间偏移值]
simStateCompliance = 'UnknownSimState';   %默认仿真状态%对系统输入求微分(无状态变量可不必理会)
function sys=mdlDerivatives(t,x,u)
sys = [];%对系统状态进行更新(没有微分操作可不必理会)
function sys=mdlUpdate(t,x,u)
sys = [];%根据系统输入求系统输出
function sys=mdlOutputs(t,x,u,gain,bias)
sys = gain * u + bias;%设置下一个采样时间点相对上一个采样时间点的间隔(仅针对离散系统)
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;        %间隔秒数
sys = t + sampleTime;%运行结束后执行清空操作(释放内存,使用MATLAB编写S函数可不必理会)
function sys=mdlTerminate(t,x,u)
sys = [];

相关文章:

Matlab simulink建模与仿真 第十六章(用户定义函数库)

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、用户定义函数库中的模块概览 注:MATLAB版本不同,可能有些模块也会有差异,但大体上区别是不大的。 二、Fcn/Matlab Fcn模块 1、Fcn模块 双击Fcn模块,在对话…...

每天练打字2:今日状况——完成击键5第1遍,赛文速度74.71

今日跟打:604字 总跟打:99883字 记录天数:2435天 (实际没有这么多天,这个是注册账号的天数) 平均每天:41字 练习常用单字中500,击键5,键准100%,两遍。&#x…...

给新人的python笔记(一)

元组与列表 元组使用圆括号()而不是[]列表的元素可以修改,但元组的元素不能修改 创建元组 menu1 (meat,fish,chicken) 访问元组 print(menu[1:3]) 修改元组 不支持 元组内置函数 len(tuple):计算元组中元素个数&#xff1b…...

如何实现异步并发限制

如何实现异步并发限制 文章目录 如何实现异步并发限制方法1注意点 方法2题目要求实现方法注意点 之前一直没有系统的去总结异步并发限制的实现思路,今天就来做个总结吧 方法1 只有一个变量 pool:代表正在执行中的任务中的集合 function sleep(name, t…...

孙怡带你深度学习(2)--PyTorch框架认识

文章目录 PyTorch框架认识1. Tensor张量定义与特性创建方式 2. 下载数据集下载测试展现下载内容 3. 创建DataLoader(数据加载器)4. 选择处理器5. 神经网络模型构建模型 6. 训练数据训练集数据测试集数据 7. 提高模型学习率 总结 PyTorch框架认识 PyTorc…...

如何在Android上实现RTSP服务器

技术背景 在Android上实现RTSP服务器确实是一个不太常见的需求,因为Android平台主要是为客户端应用设计的。在一些内网场景下,我们更希望把安卓终端或开发板,作为一个IPC(网络摄像机)一样,对外提供个拉流的…...

代理导致的git错误

问题: 今天在clone时出现如下错误: fatal: unable to access https://github.com/NirDiamant/RAG_Techniques.git/: Failed to connect to 127.0.0.1 port 10089 after 2065 ms: Couldnt connect to server真是让人感到奇怪!就在前天&#…...

Ready Go

本文首发在这里 温馨提示 XX年,指的是20XX年,后跟以前、以后之类,均包含本数链接较多,只是想言之有物,已拒绝相同外链,仅看关心的即可已尽量只引用自己的东西,16年后仓库(11/13),2…...

Matlab simulink建模与仿真 第十三章(信号通路库)

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、信号通路库中的模块概览 1、信号通路组 注:部分模块在第二章中有介绍,本章不再赘述。 2、信号存储和访问组 二、总线分配模块 Bus Assignment模块接受总线作为输入,并…...

Java中接口和抽象类的区别(语法层面的区别、设计理念层面的区别)

文章目录 1. 语法层面的区别1.1 成员属性1.2 成员方法1.3 关系 2. 设计理念层面的区别(重点)3. 举例理解抽象类和接口在设计理念层面的区别3.1 例一:门和警报3.2 例二:招聘3.3 例三:装修房子 4. 总结 1. 语法层面的区别…...

Leetcode面试经典150题-20.有效的括号

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…...

Git常用指令大全详解

Git常用指令大全详解 Git,作为目前最流行的分布式版本控制系统,其强大的功能和灵活性为开发者提供了极大的便利。无论是个人项目还是团队协作,Git都扮演着不可或缺的角色。本文将详细总结Git的常用指令,帮助大家更好地掌握这一工…...

面试真题-TCP的三次握手

TCP的基础知识 TCP头部 面试题:TCP的头部是多大? TCP(传输控制协议)的头部通常是固定的20个字节长,但是根据TCP选项(Options)的不同,这个长度可以扩展。TCP头部包含了许多关键的字…...

LabVIEW多语言支持优化

遇到的LabVIEW多语言支持问题,特别是德文显示乱码以及系统区域设置导致的异常,可能是由编码问题或区域设置不匹配引起的。以下是一些可能的原因及解决方案: 问题原因: 编码问题:LabVIEW内部使用UTF-8编码,但…...

身份证阅读器API模式 VUE Dorado7

VUE 新框架 // 身份证扫描 readIdCard(type) {// 1.连接axios.get(http://localhost:19196/openDevice).then(res > {if (res.data.resultFlag 0) {// 2.读卡axios.get(http://localhost:19196/readCard).then((res) > {if (res.data.resultFlag 0) {// this.$message…...

北京通州自闭症学校推荐:打造和谐学习氛围,助力孩子成长

在北京通州,寻找一所能够全面关注自闭症儿童成长、提供高效康复服务的学校,星贝育园无疑是众多家庭的首选。作为全国知名的广泛性发育障碍全托寄宿制儿童康复训练机构,星贝育园以其专业的康复方法、强大的师资力量和贴心的服务,为…...

openstack之cinder介绍

概念 cinder 为虚拟机提供管理块存储服务。支持的文件系统:lvm、iscsi、nfs、san、RBD 组件构成及功能介绍 cinder api:在控制节点运行,管理服务的接口,被命令行、其他组件调用; cinder scheduler:类似n…...

第k个排列 - 华为OD统一考试(E卷)

2024华为OD机试(E卷D卷C卷)最新题库【超值优惠】Java/Python/C合集 题目描述 给定参数n,从1到n会有n个整数:1,2,3,.,n,这n个数字共有 n!种排列。按大小顺序升序列出所有排列情况,并-一标记,当n3时,所有排列…...

清理C盘缓存,电脑缓存清理怎么一键删除,操作简单的教程

清理C盘缓存是维护电脑性能、释放磁盘空间的重要步骤。以下是一个详细且操作简单的教程,旨在帮助用户通过一键或几步操作完成C盘缓存的清理。 1.使用Windows系统自带工具 磁盘清理 1.打开磁盘清理工具: -按下“WinE”打开文件资源管理器…...

网络安全-ssrf

目录 一、环境 二、漏洞讲解 三、靶场讲解 四、可利用协议 4.1 dict协议 4.2 file协议 4.3 gopher协议 五、看一道ctf题吧(长亭的比赛) 5.1环境 5.2开始测试 ​编辑 一、环境 pikachu,这里我直接docker拉取的,我只写原…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&#x1f…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...