MATLAB:是否可以将数据集中的信号提取到单个变量中?
MATLAB: Is it possible to extract signals within a dataset into individual variables?
将 Simulink 仿真数据导出到 .mat 文件时,数据存储为 Simulink.SimulationData.Dataset class,其中包含所有记录的信号(class 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.
我尝试这样做的原因是因为我发现填充有数组变量的 .mat 文件可以使用 sio.loadmat 函数轻松导入到 Python 作为字典,而数据集没有。我的最终目标是轻松地将 Simulink 仿真数据导入 Python 以利用 matplotlib 进行数据绘图。
在你想要的循环中
assignin('base',data{a}.Name,data{a}.Values.data);
但是,您可能需要处理一些问题。具体来说,如果信号没有名称怎么办,如果数据不是数组怎么办,即它可能是 timeseries
。 (上面的代码可以工作,但不会为您提供轻松读入 python 所需的数据。)您需要添加一些代码来处理这两种情况。
还有一个问题是可能会在您的工作区中创建大量变量,具体取决于您记录的数据量。
您可能还会发现,您可以将保存数据的格式更改为 array
,在这种情况下,需要上述 none。
将 Simulink 仿真数据导出到 .mat 文件时,数据存储为 Simulink.SimulationData.Dataset class,其中包含所有记录的信号(class 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.
我尝试这样做的原因是因为我发现填充有数组变量的 .mat 文件可以使用 sio.loadmat 函数轻松导入到 Python 作为字典,而数据集没有。我的最终目标是轻松地将 Simulink 仿真数据导入 Python 以利用 matplotlib 进行数据绘图。
在你想要的循环中
assignin('base',data{a}.Name,data{a}.Values.data);
但是,您可能需要处理一些问题。具体来说,如果信号没有名称怎么办,如果数据不是数组怎么办,即它可能是 timeseries
。 (上面的代码可以工作,但不会为您提供轻松读入 python 所需的数据。)您需要添加一些代码来处理这两种情况。
还有一个问题是可能会在您的工作区中创建大量变量,具体取决于您记录的数据量。
您可能还会发现,您可以将保存数据的格式更改为 array
,在这种情况下,需要上述 none。