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对象。

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

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

相关文章

如何在gitee上创建远程仓库?

登录gitee网站后 填写自己的仓库信息后点击创建 然后来到一个新的界面可以看到自己的仓库地址 这样一个空白的仓库就建立好了 也可以按需选择初始化仓库

jmeter-beanshell学习10-字符串补齐位数

每天都遇到新问题,今天又一个场景,一个字符串,如果不足11位,则左边补0,补够11位。 先要获取字符串长度,然后计算差多少位,补齐。今天又发现一个Object类型,这个类型有点厉害&#x…

ARM 虚拟机FVP环境搭建

ARM Fixed Virtual Platforms (FVPs) 是由 ARM 提供的一系列虚拟化硬件模拟器,用于在物理硬件可用之前开发和测试软件。FVP 模型非常适用于软件开发、验证和性能分析,涵盖了从裸机到操作系统和复杂 SoC 系统的各种应用。 这里以Cortex-M55为例&#xff0…

MySQL执行流程、行记录格式、数据日志、数据库三大范式

目录 sql执行流程第一步:通过连接器进行连接第二步:解析器解析 SQL第三步:执行SQL 行记录存储格式行溢出 日志数据库三大范式 sql执行流程 MySQL 的架构共分为两层:上层的Server 层和下层的存储引擎层 Server 层主要负责建立连接…

XML 工具类

文章目录 XML 工具类1 通常情况下对象和XML可直接调用方法进行序列化。2 特殊情况3 补充&#xff1a;处理已有的XML数据 XML 工具类 1 通常情况下对象和XML可直接调用方法进行序列化。 public class XmlHelper {/// <summary>/// XML转实体/// </summary>/// <…

【区块链 + 智慧政务】中国铁塔区块链委托代征开票应用 | FISCO BCOS应用案例

中国铁塔是全球规模最大的通信铁塔基础设施服务提供者。通信塔站址点多面广&#xff0c;业主构成复杂&#xff0c;因此产生海量税务、合同、票据等信息。为进一步提高场租或供电取票的及时性和规范性&#xff0c;严格遵循税务相关的要求&#xff0c;中国铁塔采用国产开源联盟链…

RHCSA —— 第五节 (Linux中执行命令)

目录 一、命令格式 命令 分为两种&#xff1a;内置命令 和 外部命令 选项&#xff1a;指定命令的运行特性&#xff0c;指明要运行命令中的哪一个功能代码。 参数&#xff1a;命令的作用对象&#xff0c;即命令对什么生效。 小技巧 二、ls 命令 &#xff08;list&#xff0…

惠海H5112A降压恒流芯片IC 60V72V80V100V转24V36V48V多路共阳输出景观LED点光源

H5112A是一款外围电路简单的多功能平均电流型LED恒流驱动器&#xff0c;适用于5-90V电压范围的非隔离式大功率恒流LED驱动领域。芯片采用了平均电流模式控制&#xff0c;输出电流精度在士3%;输出电流对输入输出电压以及电感不敏感;芯片内部集成了环路补偿&#xff0c;外围电路更…

CV09_深度学习模块之间的缝合教学(4)--调参

深度学习就像炼丹。炉子就是模型&#xff0c;火候就是那些参数&#xff0c;材料就是数据集。 1.1 参数有哪些 调参调参&#xff0c;参数到底是哪些参数&#xff1f; 1.网络相关的参数&#xff1a;&#xff08;1&#xff09;神经网络网络层 &#xff08;2&#xff09;隐藏层…

Docker_指令篇

Docker 的常用指令 1. 启动docker systemctl start docker2. 关闭docker systemctl stop docker3. 重启docker systemctl restart docker4. 设置自启动 systemctl enable docker5. 查看运行状态 systemctl status docker6. 查看帮助命令 docker pull --help7. 查看镜像 …

XML 解析异常问题解决

问题描述 The parser has encountered more than "64000" entity expansions in this document; this is the limit imposed by the JDK. 在运行 Java 应用程序时&#xff0c;出现了 XML 解析异常。具体表现为&#xff1a; 报错信息显示无法创建 StAX&#xff08;S…

AIGC笔记--基于Stable Diffusion实现图片的inpainting

1--完整代码 SD_Inpainting 2--简单代码 import PIL import torch import numpy as np from PIL import Image from tqdm import tqdm import torchvision from diffusers import AutoencoderKL, UNet2DConditionModel, DDIMScheduler from transformers import CLIPTextMod…

flutter 手写 TabBar

前言&#xff1a; 这几天在使用 flutter TabBar 的时候 我们的设计给我提了一个需求&#xff1a; 如下 Tabbar 第一个元素 左对齐&#xff0c;试了下TabBar 的配置&#xff0c;无法实现这个需求&#xff0c;他的 配置是针对所有元素的。而且 这个 TabBar 下面的 滑块在移动的时…

JDK8升级到JDK17 sun.font.FontDesignMetrics类无效替代方案

问题&#xff1a; 项目从jdk1.8切成jdk17后 FontMetrics fontMetrics FontDesignMetrics.getMetrics(font); 报错&#xff1a; cannot access class sun.font.FontDesignMetrics (in module java.desktop) because module java.desktop does not export sun.font 搜索资料&am…

Spring boot 2.0 升级到 3.3.1 的相关问题 (二)

文章目录 Spring boot 2.0 升级到 3.3.1 的相关问题 &#xff08;二&#xff09;自定义错误处理页面的问题问题描述问题解决 spring.factories 废弃的问题问题描述问题解决 Spring boot 2.0 升级到 3.3.1 的相关问题 &#xff08;二&#xff09; 自定义错误处理页面的问题 问…

4.定时器

原理 时钟源&#xff1a;定时器是内部时钟源&#xff08;晶振&#xff09;&#xff0c;计数器是外部计时长度&#xff1a;对应TH TL计数器初值寄存器(高八位,低八位)对应的中断触发函数 中断源中断处理函数Timer0Timer0_Routine(void) interrupt 1Timer1Timer1_Routine(void) …

爬虫学习 | 01 Web Scraper的使用

目录 背景介绍&#xff1a; 第一部分&#xff1a;Web Scraper简介 1.什么是Web Scraper&#xff1a; Web Scraper&#x1f6d2; 主要用途&#xff1a; 2.为什么选择Web Scraper&#xff1a; 第二部分&#xff1a;安装Web Scraper ​​​​​1.打开google浏览器&#xf…

C语言走马灯文字

目录 开头程序程序的流程图程序的效果结尾 开头 大家好&#xff0c;我叫这是我58。你们听说过走马灯吗&#xff1f;如果没听说过&#xff0c;那也没关系&#xff0c;因为走马灯其实是一种里面的图案会移动的灯笼&#xff0c;而且因为走马灯里面的图案的移动方式有两种&#xf…

【QT学习十五】 QT基本绘图

目录 1. Qt绘图基础 1.1 什么是Qt绘图 1.2 基本绘图类与函数 2. 简单图形绘制 2.1 画线、矩形和椭圆 2.2 绘制文本和图像 3. 高级绘图技巧 3.1 使用QPainterPath绘制复杂图形 3.2 渐变填充与图案填充 4. 绘图性能优化 4.1 双缓冲技术 4.2 使用QPixmap和QImage提高性…

object-C 解答算法:合并两个有序数组(leetCode-88)

合并两个有序数组(leetCode-88) 题目如下图:(也可以到leetCode上看完整题目,题号88) 首先搞懂,什么叫“非递减顺序” 非递减顺序,是指一个序列中的元素从前往后&#xff08;或从左到右&#xff09;保持不减少或相等。 这意味着序列中的元素可以保持相同的值&#xff0c;但不会…