python - MATLAB:是否可以将数据集中的信号提取到单个变量中?
问题描述
将 Simulink Simulation 数据导出到 .mat 文件时,数据存储为 Simulink.SimulationData.Dataset 类,其中包含所有记录的信号(属于 Simulink.SimulationData.Signal 类)。是否可以将所有信号值数据提取到具有相同信号名称的新数组变量中?
例如,DS(1x1 数据集)包含两个信号:速度(1x1 信号)命令(1x1 信号)
然后我想从 DS 以编程方式在我的工作区中创建以下变量,其中每个变量只包含它们的数据值:速度(100x1 双)命令(100x1 双)
我最初的想法是编写一个脚本来在 for 循环中创建新变量。类似于以下内容:
NumDatasetElements=data.numElements
for a = 1:NumDatasetElements
data{a}.Name=data{a}.Values.data
end
这显然不起作用,但我认为它显示了我正在尝试做的事情。我需要创建一个名为 data{a}.Name 的变量,然后将其设置为 data{a}.Values.data。
我尝试这样做的原因是因为我发现使用 sio.loadmat 函数填充了数组变量的 .mat 文件很容易作为字典导入到 Python 中,而数据集则没有。我的最终目标是轻松将 Simulink Simulation 数据导入 Python,以利用 matplotlib 进行数据绘图。
解决方案
在你想要的循环内
assignin('base',data{a}.Name,data{a}.Values.data);
但是,您可能需要处理一些问题。具体来说,如果信号没有名称怎么办,如果数据不是数组(即它可能是timeseries
. (上面的代码可以工作,但不能为您提供轻松读入 python 所需的数据。)您需要添加一些代码来处理这两种情况。
还有一个问题是可能会在您的工作区中创建大量变量,具体取决于您记录的数据量。
您可能还会发现您可以将保存数据的格式更改为array
,在这种情况下,上述任何一项都不需要。
推荐阅读
- tensorflow - tensorflow 2.0 keras 训练 ImageDataGenerator + flow_from_directory + tf.data.Dataset 给出“形状”相关错误
- javascript - 触发一次后删除功能
- ruby-on-rails - 在生产环境中访问 `/rails/mailers` 时看到一个空白页面
- java - AEADBadTagException 标记不匹配套接字数据
- r - R中的For循环更新的动态变量
- php - Laravel Eloquent 批量更新,保证唯一性
- javascript - ApexCharts - 在“简单圆环图”中添加一个数字
- php - PHP Docker 安装 pecl V8JS (Debian Buster)
- intel - 使用 Intel Quartus 中的 Intel University 程序示例 - 主板支持包有问题?
- asp.net - 安装 Visual Studio 2019 for ASP.NET 3.5 Web 项目后“由比当前加载的运行时更新的运行时构建”