模拟大数据和SimulationData。DatasetRef对象;避免eval

1视图(30天)
大家好!
我需要为我的博士项目运行模拟仿真软件。万博1manbetx在蒙特卡洛的方法我想模拟许多输入(订单的几个100)随机生成。由于这些信号Timeseries的需要大量的内存,所以我选择了使用DatasetRef对象: https://de.mathworks.com/help/万博1manbetxsimulink/slref/simulink.simulationdata.datasetref-class.html
也这里描述: https://de.mathworks.com/help/万博1manbetxsimulink/ug/stream-input-data-for-a-parallel-simulation.html 我想我的数据流。然而他们的例子为模拟数据集名为Road1 Road2等等,我读不好练习,所以我想要避免它。
我已经学会了,我可以拯救我的数据作为一个单元阵列的数据集,每个包含一个timeseries输入数据。但是我不能从这些条目创建DatasetRef对象交给parsim,随着Simulink.SimulationData.DatasetRef()函数需要一个变量名作为输入,但不接受“数据万博1manbetx{我}”作为变量名。
不幸的是大型的数据上传,但我的代码是这样的:
商店= matfile(附加(路径,“test.mat”));
numTestCases =长度(Store.Data);
我= 1:numTestCases
inputData (i)万博1manbetx = Simulink.SimulationData.DatasetRef(附加(路径,“test.mat”),sprintf (“数据我{%}”,我));
结束
和存储得到:
商店=
matlab.io.MatFile
属性:
Properties.Source:“路径\ test.mat”
属性。可写:假
属性。ProtectedLoading:假
数据(20 x1细胞):
方法
这里有人知道如何避免使用eval来创建数据集Data1、Data2等等?
欢呼和谢谢你
1评论
Alvaro
Alvaro 2022年11月28日
编辑:Alvaro 2022年11月28日
你可以看看是什么加载的例子 文档 你通过执行有关
structExample =负载(“suspn_3dof_test_cases.mat”)
你可以看到,它不是一个单元阵列的数据集,但结构体字段Road1, Road2等等。
可以动态地添加字段结构:
例如,看到这段代码生成的结构。
i = 1:10
路= strcat (“路”num2str(我));
myStruct。(路)=兰德(1、3);
结束
你能进一步解释一下为什么以这种方式生成结构会导致任何问题?
或者,你可以考虑转换单元阵列结构使用 cell2struct
//www.tianjin-qmedu.com/help/matlab/ref/cell2struct.html

登录置评。

答案(1)

Smattering_Applause
Smattering_Applause 2022年6月23日
如果你可以使它成为一个单元阵列可以使它成为一个结构体,然后保存方法的结构和负载然后没有eval的变量名。

类别

找到更多的在系统的作曲家帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!