MATLAB中Simulink.SimulationData.Dataset用法
目录
语法
说明
示例
访问使用Dataset格式记录的数据 打开模型vdp
使用 Dataset 对象来组合模拟输入信号
Simulink.SimulationData.Dataset的功能是访问已记录的模拟数据或组合模拟输入数据。
语法
ds = Simulink.SimulationData.Dataset
ds = Simulink.SimulationData.Dataset(dataToConvert)
ds = Simulink.SimulationData.Dataset(dataToConvert,"DatasetName",dsName)
说明
ds = Simulink.SimulationData.Dataset:这种语法创建一个空的、未命名的Dataset对象,可以随后手动添加元素。通常在您希望创建一个空的Dataset对象来存储要使用Inport或In Bus Element块加载的外部输入数据时使用。
ds = Simulink.SimulationData.Dataset(dataToConvert):这种语法创建一个未命名的Dataset对象,其中包含一个或多个元素,每个元素包含由dataToConvert指定的数据。可以使用这种语法将使用其他格式的数据转换为Dataset格式。有关详细信息,请参阅将timeseries对象转换为Dataset对象。
ds = Simulink.SimulationData.Dataset(dataToConvert, "DatasetName", dsName):这种语法创建一个以dsName指定名称的Dataset对象,其中包含一个或多个元素,每个元素包含由dataToConvert指定的数据。这种语法也用于将其他格式的数据转换为Dataset格式,但它允许您为Dataset指定名称。
示例
访问使用Dataset格式记录的数据 打开模型vdp
该模型产生两个输出x1和x2。
mdl = "vdp";
open_system(mdl);
如图所示:

模拟该模型,并同时记录块状态和输出数据。
out = sim(mdl,"SaveState","on");
所有已记录的数据都以单个变量 "out" 返回,它是一个 Simulink.SimulationOutput 对象。SimulationOutput 对象包含一个 Simulink.SimulationData.Dataset 对象,该对象将每种已记录的数据分组在一起。
out
out = Simulink.SimulationOutput:tout: [64x1 double] xout: [1x1 Simulink.SimulationData.Dataset] yout: [1x1 Simulink.SimulationData.Dataset] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]
使用点符号访问包含已记录输出数据的 Dataset 对象 "yout"。该 Dataset 对象包含每个输出的 Simulink.SimulationData.Signal 对象。
out
out = Simulink.SimulationOutput:tout: [64x1 double] xout: [1x1 Simulink.SimulationData.Dataset] yout: [1x1 Simulink.SimulationData.Dataset] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]
Signal 对象包含关于信号的元数据,包括生成信号的块的路径和端口的索引。使用 getElement 函数按名称访问包含信号 x1 数据的 Signal 对象。您还可以使用花括号({}) 按索引访问 Dataset 对象中的元素。
outputX1 = getElement(outputs,'x1')
outputX1 = Simulink.SimulationData.SignalPackage: Simulink.SimulationDataProperties:Name: 'x1'PropagatedName: ''BlockPath: [1x1 Simulink.SimulationData.BlockPath]PortType: 'inport'PortIndex: 1Values: [1x1 timeseries]
信号数据存储在 Signal 对象的 Values 属性中,以 timeseries 对象的形式。
outputValsX1 = outputX1.ValuestimeseriesCommon Properties:Name: 'x1'Time: [64x1 double]TimeInfo: tsdata.timemetadataData: [64x1 double]DataInfo: tsdata.datametadata
时间值位于 timeseries 对象的 Time 属性中,信号值位于 Data 属性中。
outputTimesX1 = outputValsX1.Time
outputTimesX1 = 64×100.00010.00060.00310.01570.07850.28440.54070.87881.2788⋮outputDataX1 = outputValsX1.Data
outputDataX1 = 64×12.00002.00002.00002.00001.99981.99431.93791.81551.59901.2687⋮
还可以将这些步骤合并到一行代码中以访问时间值或数据值。
outputDataX1 = getElement(out.yout,'x1').Values.Data
outputDataX1 = 64×12.00002.00002.00002.00001.99981.99431.93791.81551.59901.2687⋮
使用 Dataset 对象来组合模拟输入信号
创建三个模拟输入信号的数据,并将它们组合到一个 Dataset 对象中。一个简单的模型使用三个根级 Inport 块来加载 Dataset 对象的内容。模型中的 Dashboard Scope 块显示使用加载的输入数据创建的每个信号。
首先,创建要加载到模型中的信号数据。在建模离散输入信号时,可以使用此示例中的表达式创建均匀间隔的时间向量。MATLAB® 支持多种其他方法来创建均匀间隔的向量,但其他方法可能会在时间数据中引入双精度舍入误差,从而导致意外的模拟结果。
sampleTime = 0.01;
numSteps = 1001;
time = sampleTime*(0:numSteps-1);
time = time';
创建正弦信号、余弦信号和线性信号的信号数据。
sineVals = sin(2*pi/3*time);
cosVals = cos(2*pi/3*time);
lineVals = time;
创建一个 timeseries 对象来存储每个信号的数据。为每个 timeseries 对象赋予一个描述性名称,以便在它们被组合到 Dataset 对象中后,信号可以容易识别。
sineTS = timeseries(sineVals,time,'Name','Sine Wave');
cosTS = timeseries(cosVals,time,'Name','Cosine Wave');
lineTS = timeseries(lineVals,time,'Name','Line');
创建一个 Dataset 对象,并使用 addElement 函数将每个 timeseries 对象添加到 Dataset 对象中。
inputData = Simulink.SimulationData.Dataset;
inputData.Name = 'inputData';
inputData = addElement(inputData,sineTS);
inputData = addElement(inputData,cosTS);
inputData = addElement(inputData,lineTS)
inputData =
Simulink.SimulationData.Dataset 'inputData' with 3 elementsName BlockPath ___________ _________ 1 [1x1 timeseries] Sine Wave '' 2 [1x1 timeseries] Cosine Wave '' 3 [1x1 timeseries] Line '' - Use braces { } to access, modify, or add elements using index.
当使用根级Inport块加载外部输入数据时,您需要在“数据导入/导出”面板的“模型配置参数”中的“Input”参数中指定要加载的数据。打开模型LoadInputDataset并查看Input参数已指定为inputData。
open_system('LoadInputDataset.slx');
对模型进行仿真。与第一个Inport块连接的Dashboard Scope块显示正弦信号,与第二个Inport块连接的Dashboard Scope块显示余弦信号,与第三个Inport块连接的Dashboard Scope块显示线性信号。
out = sim('LoadInputDataset.slx');
如图所示:

可以交换Dataset对象中元素的顺序,然后在元素与Inport块的映射方式上看到相应的变化。
inputData{1} = lineTS;
inputData{3} = sineTS
inputData =
Simulink.SimulationData.Dataset 'inputData' with 3 elementsName BlockPath ___________ _________ 1 [1x1 timeseries] Line '' 2 [1x1 timeseries] Cosine Wave '' 3 [1x1 timeseries] Sine Wave '' - Use braces { } to access, modify, or add elements using index.
再次对模型进行仿真。现在,显示第一个元素的Dashboard Scope块显示直线,而显示第三个元素的Dashboard Scope块显示正弦波,反映了Dataset对象中元素的新顺序。
out = sim('LoadInputDataset.slx');
如图所示:

一个Simulink.SimulationData.Dataset对象用于组合相关的数据。通常,已记录的模拟结果会被组织在Dataset对象中。当加载初始状态以及使用Inport块或Signal Editor块加载外部输入数据时,也可以使用Dataset对象来组合模拟输入数据。
通过记录模拟数据创建的Dataset对象包含一个或多个元素。每个元素包含一个已记录的信号、输出、数据存储或状态的数据。每个元素都是一个对象,对象的类型取决于它所包含的数据类型。
信号和输出 — Simulink.SimulationData.Signal对象
状态和最终状态 — Simulink.SimulationData.State对象
数据存储 — Simulink.SimulationData.DataStoreMemory对象
当创建一个用于组合模拟输入数据的Dataset对象时,每个元素包含一个信号、总线或总线数组的数据。可以使用任何受支持的加载方法支持的数据格式添加数据。
通常,在记录模拟数据时,会创建一个Simulink.SimulationData.Dataset对象,包括以下情况:
- 使用信号记录时记录数据。
- 使用Dataset格式记录输出、状态或最终状态数据。
- 记录数据存储。
- 使用记录块将数据记录到工作区或MAT文件中。
- 使用Scope块以Dataset格式记录数据。
- 使用Floating Scope或Scope Viewer记录数据。
要将模型的外部输入数据组合到Dataset对象中,您可以执行以下操作:
- 创建一个空的Dataset对象,并使用addElement函数添加输入数据。
- 使用createInputDataset创建一个Dataset对象,其中包含模型中每个根级Inport块或In Bus Element块的元素。然后,指定每个元素的数据。
- 使用Signal Editor交互式地创建和编辑包含模拟输入数据的Dataset对象。有关详细信息,请参阅创建和编辑信号数据。
还可以通过将使用其他格式的数据转换为使用Dataset格式的数据来创建Dataset对象。将所有数据保存在一个通用格式中可以简化后处理过程。有关详细信息,请参阅将timeseries对象转换为Dataset对象。
注意:
-
可以使用花括号({})按索引访问、添加或修改Dataset对象中的元素。
-
要通过名称访问、添加或修改Dataset对象的元素,可以使用getElement、addElement和setElement函数。
-
当使用Dataset对象组合模拟输入时,您可以使用Signal Editor或Signal Editor块轻松更改提供模拟输入的Dataset对象。
-
当使用根级Inport块从Dataset对象加载外部输入数据时,可以使用Root Inport Mapper将Dataset对象中的每个元素按块名称、块路径、信号名称或端口顺序映射到Inport块。也可以编写自己的函数来进行数据映射。
-
当将Dataset对象中的数据保存到MAT文件时,如果Dataset对象的内容过大而无法完全装入内存,考虑保存到Version 7.3 MAT文件。您可以创建一个Simulink.SimulationData.DatasetRef,它引用了一个MAT文件中的Dataset对象,而不需要将数据加载到内存中进行数据处理或加载大数据。
-
要将Dataset对象保存到一个可以在早期版本中打开的MAT文件中,请使用save函数而不是exportToPreviousRelease函数。
-
可以编写自己的读取器,使用Simulink.io.FileType类将数据从文件导入到基础工作区、模型工作区或Signal Editor中的Dataset对象。
相关文章:
MATLAB中Simulink.SimulationData.Dataset用法
目录 语法 说明 示例 访问使用Dataset格式记录的数据 打开模型vdp 使用 Dataset 对象来组合模拟输入信号 Simulink.SimulationData.Dataset的功能是访问已记录的模拟数据或组合模拟输入数据。 语法 ds Simulink.SimulationData.Dataset ds Simulink.SimulationData.Da…...
Spring Security学习笔记(一)Spring Security架构原理
前言:本系列博客基于Spring Boot 2.6.x依赖的Spring Security5.6.x版本 Spring Security中文文档:https://springdoc.cn/spring-security/index.html 一、什么是Spring Security Spring Security是一个安全控制相关的java框架,它提供了一套全…...
nginx的access.log日志输出请求数
适用格式 #log_format main $remote_addr - $remote_user [$time_local] "$request" # $status $body_bytes_sent "$http_referer" # "$http_user_agent" "$http_x_forwarded_for"; 形如: 12…...
前端网站(三)-- 记事本【附源码】
开篇(请大家看完):此网站写给挚爱,后续页面还会慢慢更新,大家敬请期待~ ~ ~ 此前端框架,主要侧重于前端页面的视觉效果和交互体验。通过运用各种前端技术和创意,精心打造了一系列引人入胜的页面…...
java——Junit单元测试
测试分类 黑盒测试:不输入代码,给输入值,看程序能够给出期望的值。 白盒测试:写代码,关注程序具体执行流程。 JUnit单元测试 一个测试框架,供java开发人员编写单元测试。 是程序员测试,即白…...
Scala学习笔记17: Try与异常处理
目录 第十七章 Try与异常处理1- 异常的抛出和捕获1. 异常抛出2. 异常捕获 2- 函数式的错误处理1. Try 类型2. 使用 Try3. 处理 Try 结果4. Try 的常用方法5. Try 的优势总结 end 第十七章 Try与异常处理 1- 异常的抛出和捕获 Scala 的异常处理机制与 Java非常相似, 但也有一些…...
内网信息收集——MSF信息收集浏览器记录配置文件敏感信息
文章目录 一、配置文件敏感信息收集二、浏览器密码&记录三、MSF信息收集 域控:windows server 2008 域内机器:win7 攻击机:kali 就是红日靶场(一)的虚拟机。 一、配置文件敏感信息收集 使用searchall64.exe&#…...
C++ STL中的std::remove_if 的用法详解
在现代C++编程中,标准模板库(STL)提供了一系列功能强大的算法,这些算法极大地简化了日常的编程任务。其中,std::remove_if是一个非常实用的函数,它允许我们从容器中移除满足特定条件的所有元素。本文将深入探讨std::remove_if的使用方法,并通过一个具体的例子——基于St…...
基于AT89C51单片机的16×16点阵LED显示器字符滚动显示设计(含文档、源码与proteus仿真,以及系统详细介绍)
本篇文章论述的是基于AT89C51单片机的1616点阵LED显示器字符滚动显示设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。 目录 仿真效果图 仿真图 代码 系统论文 资源下载 设计的内容和要求 熟悉51系…...
Docker 日志丢失 - 解决方案
Docker 日志默认使用的是 journald 的方式. RateLimitBurst 是 journald 的一个参数,用于限制日志的速率。如果日志的生成速度超过这个限制,journald 可能会丢弃日志。你可以通过调整这个参数来避免日志被丢弃。 调整 RateLimitBurst 和 RateLimitInte…...
物联网环境下机器人隐私保护法律框架研究-隐私保护法律监管平台
1. 引言 物联网技术的发展推动了机器人在家庭、医疗、工业等领域的广泛应用。然而,这些智能设备在数据采集和处理过程中面临着巨大的隐私保护挑战。本设计方案旨在构建一个全面的隐私保护法律监管平台,确保物联网环境下机器人的隐私数据得到有效保护,并符合相关法律法规的要…...
设计模式-创建型模式之工厂方法模式
和简单工厂模式中工厂负责生产所有产品相比,工厂方法模式将生成具体产品的任务分发给具体的产品工厂,定义一个用于创建对象的接口,让子类决定实例化哪个产品类对象。 工厂方法模式的主要角色: 抽象工厂(AbstractFactory):提供了创建产品的接…...
婚礼成本与筹备策略:一场梦幻婚礼的理性规划
婚礼成本与筹备策略:一场梦幻婚礼的理性规划 摘要 婚礼,作为人生中的重要仪式,承载着新人的爱情与梦想,同时也伴随着不菲的经济投入。本文旨在探讨婚礼所需的大致成本、影响成本的主要因素以及婚礼筹备过程中的关键注意事项&…...
前端a-tree遇到的问题
在使用a-tree时候,给虚拟滚动的高度,然后展开a-tree滑动一段距离 比如这样 随后你切换页面,在返回这个页面的时候 就会出现这样的bug 解决方法: onBeforeRouteLeave((to, from, next) > {// 可以在路由参数变化时执行的逻辑ke…...
SpringCloud教程 | 第十篇: 读取Nacos的配置
1、引入依赖 <dependency><groupId>com.alibaba.boot</groupId><artifactId>nacos-config-spring-boot-starter</artifactId><version>0.2.7</version></dependency> 2、在启动类加上 NacosPropertySource(dataId"nac…...
漏洞-Alibaba Nacos derby 远程代码执行漏洞
【漏洞详情】 漏洞描述:Alibaba Nacos derby 存在远程代码执行漏洞,由于Alibaba Nacos部分版本中derby数据库默认可以未授权访问,恶意攻击者利用此漏洞可以未授权执行SQL语句,从而远程加载恶意构造的jar包,最终导致任意…...
SpringBoot解决Apache Tomcat输入验证错误漏洞
Apache Tomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat存在输入验证错误漏洞,该漏洞源于HTTP/2请求的输入验证不正确,会…...
echarts解决数据差异过大的问题
问题描述 使用echarts折线图和柱状图展示数据时,如果数据差异值较大,会导致显示图形差异过大,图表不美观。 如这一组数据[2000000, 200, 0.1, 20, 0, -10, -3000],渲染出来的效果如下图: 可以看到由于最大值和最小值差…...
Oracle 常用系统
常用系统包 查看系统包 SELECT * FROM all_objects WHERE object_type PACKAGE AND owner SYS AND object_name 包名称;AUTO_SERVER_PKG AUTO_SERVER_PKG 在Oracle数据库的上下文中,并不是一个标准的Oracle系统包或内置功能。然而,在参考文章中提到…...
WPS点击Zotero插入没有任何反应
wps个人版没有内置vba,因此即便一下插件安装上了(如Axmath,zotero),当点击插件的时候会出现“点不动”、“点击插件没反应的现象。至于islide一类的插件,干脆连装都装不上。 这就需要手动安装一下vba。 针…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
