MATLAB:是否可以将数据集中的信号提取为单个变量?

2024-09-30 16:25:35 发布

您现在位置:Python中文网/ 问答频道 /正文

将Simulink仿真数据导出到.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}。值.数据. 在

我尝试这样做的原因是,我发现填充了数组变量的.mat文件可以很容易地作为字典导入到Python中sio.loadmat公司函数,而数据集没有。我的最终目标是将Simulink仿真数据轻松导入Python,以利用matplotlib进行数据打印。在


Tags: 文件数据命令fordata信号记录ds
1条回答
网友
1楼 · 发布于 2024-09-30 16:25:35

在你想要的循环里

assignin('base',data{a}.Name,data{a}.Values.data);

但是,有一些潜在的问题需要你去处理。具体地说,如果信号没有名称,如果数据不是数组,也就是说,它可能是timeseries怎么办。(上面的代码可以工作,但不能提供轻松读入python所需的数据)您需要添加一些代码来处理这两种情况。在

还有一个问题是,可能会在您的工作区中创建大量的变量,这取决于您记录的数据量。在

您还可能发现,您只需将保存的数据的格式更改为array,在这种情况下,上述任何一项都不需要。在

相关问题 更多 >