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

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对象,包括以下情况:

  1. 使用信号记录时记录数据。
  2. 使用Dataset格式记录输出、状态或最终状态数据。
  3. 记录数据存储。
  4. 使用记录块将数据记录到工作区或MAT文件中。
  5. 使用Scope块以Dataset格式记录数据。
  6. 使用Floating Scope或Scope Viewer记录数据。

要将模型的外部输入数据组合到Dataset对象中,您可以执行以下操作:

  1. 创建一个空的Dataset对象,并使用addElement函数添加输入数据。
  2. 使用createInputDataset创建一个Dataset对象,其中包含模型中每个根级Inport块或In Bus Element块的元素。然后,指定每个元素的数据。
  3. 使用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 远程代码执行漏洞

【漏洞详情】 漏洞描述&#xff1a;Alibaba Nacos derby 存在远程代码执行漏洞&#xff0c;由于Alibaba Nacos部分版本中derby数据库默认可以未授权访问&#xff0c;恶意攻击者利用此漏洞可以未授权执行SQL语句&#xff0c;从而远程加载恶意构造的jar包&#xff0c;最终导致任意…...

SpringBoot解决Apache Tomcat输入验证错误漏洞

Apache Tomcat是美国阿帕奇&#xff08;Apache&#xff09;基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page&#xff08;JSP&#xff09;的支持。 Apache Tomcat存在输入验证错误漏洞&#xff0c;该漏洞源于HTTP/2请求的输入验证不正确&#xff0c;会…...

echarts解决数据差异过大的问题

问题描述 使用echarts折线图和柱状图展示数据时&#xff0c;如果数据差异值较大&#xff0c;会导致显示图形差异过大&#xff0c;图表不美观。 如这一组数据[2000000, 200, 0.1, 20, 0, -10, -3000]&#xff0c;渲染出来的效果如下图&#xff1a; 可以看到由于最大值和最小值差…...

Oracle 常用系统

常用系统包 查看系统包 SELECT * FROM all_objects WHERE object_type PACKAGE AND owner SYS AND object_name 包名称;AUTO_SERVER_PKG AUTO_SERVER_PKG 在Oracle数据库的上下文中&#xff0c;并不是一个标准的Oracle系统包或内置功能。然而&#xff0c;在参考文章中提到…...

WPS点击Zotero插入没有任何反应

wps个人版没有内置vba&#xff0c;因此即便一下插件安装上了&#xff08;如Axmath&#xff0c;zotero&#xff09;&#xff0c;当点击插件的时候会出现“点不动”、“点击插件没反应的现象。至于islide一类的插件&#xff0c;干脆连装都装不上。 这就需要手动安装一下vba。 针…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...