主要内容

流日志数据到磁盘

日志模拟数据时,您可以将数据存储在一个工作空间变量,或流数据磁盘上的临时文件,工作空间变量指向临时文件。在这两种情况下,你与通过仿真模拟数据日志记录交互变量。

保存数据到工作区消耗内存。流媒体数据记录到磁盘数据记录能力显著增加,因为你不再是系统内存的限制。

使流数据到磁盘的所有模型,在MATLAB®将来发布,点击首选项。在左窗格的首选项对话框中,选择Simscape,然后选择流数据到临时磁盘目录复选框。

当这种偏好,仿真数据的形式simlog对象生成的模拟过程中,存储在一个MLDATX文件在一个临时文件夹在您的用户名。工作空间变量的类型simscape.logging.Node,命名为指定的工作空间变量名配置参数,创建,而是存储所有仿真数据的引用simlog在临时文件对象。临时文件仍然存在,只要有一个日志在工作区中变量名引用。

你查看和分析模拟数据通过访问模拟日志记录变量,完全相同的方式好像仿真数据是存储在里面。所有工作空间变量,存储对象之间的交互发生在幕后。因此,您可以使用Simscape™结果探险家,以及所有相关的方法simscape.logging.Nodesimscape.logging.Series类查询、阴谋和分析记录仿真数据。

以下限制适用于流数据到磁盘时:

  • 限制数据点历史数据(去年N步)配置参数被忽略。然而,您可以使用大量毁灭参数来限制登录数据点的数量。有关更多信息,请参见数据日志记录选项

  • 当你暂停模型模拟和后退一步,然后,所有的时间点都记录在磁盘上。这不同于直接将数据存储在工作区中变量,日志数据回滚。

流到磁盘和parfor循环

如果你有一个并行计算工具箱™许可证,然后,当你在模拟模型parfor循环,生成临时MLDATX文件地址空间内的工作线程。访问外的仿真数据parfor循环,导出数据,然后导入导出的文件之外的parfor循环。

parfor i = 1:2模型= ' ssc_dcmotor ' load_system(模型);set_param(模型、“SimulationMode”、“正常”);set_param(模型、‘SimscapeLogType’、‘所有’,‘SimscapeLogName’,‘simlog’);simOut = sim(模型、“ReturnWorkspaceOutputs”、“在”);%保存到另一个文件通过添加索引文件= [‘fileName_ num2str(我)“.mldatx”);simscape.logging.export (simOut.get (“simlog”),文件);结束%导入导出的文件var = simscape.logging.import (“fileName_1.mldatx”);…

流到磁盘,parsim

如果你有一个并行计算工具箱许可证,模拟的模型parsim命令提供了额外的功能,而使用parfor循环。下面的例子显示了如何使用parsim命令流时记录仿真数据到磁盘。

在运行脚本之前,确保启用流到磁盘:打开首选项对话框中,选择Simscape,然后选择流数据到临时磁盘目录复选框。

模型=“ssc_dcmotor”;%创建数组的输入来运行多个模拟num = 10;(1:num) = Si金宝appmulink.SimulationInput(模型);% MLDATX指定任何目录文件将被创建为每个运行logDir = fullfile (cd, tmp);%当前目录mkdir (logDir) i = 1: num %这只会工作与当地池(我)。PostSimFcn = @ (x) locHandleSimscapeLTF(模型、x logDir,我);结束= parsim(在);idx = 1:元素个数(出)simlog = simscape.logging.import ((idx) .SimscapeFileName);sscexplore (simlog);结束函数newOut = locHandleSimscapeLTF(模型、从目录名,runId) %所有记录的变量以及simlog应该是“newOut”对象的一部分loggedVars = out.who;newOut =结构; for i = 1 : numel(loggedVars) loggedData = out.(loggedVars{i}); if isa(loggedData, 'simscape.logging.Node') % Specify any file name with .mldatx extension filename = [model '_simlog_file_' num2str(runId) '.mldatx']; simscapeFileName = fullfile(dirName, filename); % Export simlog to MLDATX file simscape.logging.export(loggedData, simscapeFileName); newOut.SimscapeFileName = simscapeFileName; else newOut.(loggedVars{i}) = out.(loggedVars{i}); end end end

相关的话题