Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 有关Simulink MDL和SLX格式的信息?_Matlab_Simulink_File Format - Fatal编程技术网

Matlab 有关Simulink MDL和SLX格式的信息?

Matlab 有关Simulink MDL和SLX格式的信息?,matlab,simulink,file-format,Matlab,Simulink,File Format,关于这些文件格式有哪些可用信息?哪些工具可用于解析这些文件?公开的信息很少。以下是我发现的一点: 是MathWorks用于存储Simulink模型的专有文件格式。SLX是在Simulink中引入的,并在中成为默认文件格式。除了文件结构外,SLX和MDL文件的内容非常相似。例如,两种格式之间的键值对似乎相同。人们经常说解析这些文件是一个坏主意,因为它们可以在Simulink版本之间更改(参见am304和我上面的评论),但我没有看到太多证据证明这一点 MDL格式似乎是MathWorks内部开发的,以

关于这些文件格式有哪些可用信息?哪些工具可用于解析这些文件?

公开的信息很少。以下是我发现的一点:

是MathWorks用于存储Simulink模型的专有文件格式。SLX是在Simulink中引入的,并在中成为默认文件格式。除了文件结构外,SLX和MDL文件的内容非常相似。例如,两种格式之间的键值对似乎相同。人们经常说解析这些文件是一个坏主意,因为它们可以在Simulink版本之间更改(参见am304和我上面的评论),但我没有看到太多证据证明这一点

MDL格式似乎是MathWorks内部开发的,以及截至2014年5月的

SLX文件是包含XML文件集合的zip文件,大多数模型规范存储在
simulink/blockdiagram.XML
中@am304指出了以下信息:

SLX是一种符合开放式包装的压缩包装 约定(OPC)互操作性标准。SLX商店模式 在XML和其他国际格式中使用Unicode®UTF-8的信息 格式。以SLX格式保存Simulink模型:

  • 与MDL相比,通常会减少文件大小。MDL和SLX之间的文件大小缩减因型号而异

  • 通过加载和保存包含朝鲜语和中文字符的MDL文件,解决了早期版本中的一些问题

  • 启用增量加载和保存。Simulink通过只加载所需的部分来优化性能和内存使用 建模并仅保存模型的修改部分

除了上面文本中的参考文献之外,这里还有一些参考文献:




关于这些文件格式有哪些可用信息

MathWorks在R2007b中确实有一些MDL文件格式

SLX文件是zipfile容器,其内部结构基于的格式。SLX文件包含一个或多个XML文件,其内部结构类似于MDL文件,但为XML格式。此外,诸如图形之类的二进制资源可以存储在单独的JPG文件中,而不是像MDL文件中那样进行文本编码和直接嵌入

随着新功能添加到Simulink,这两种格式都会发生变化,但随着MathWorks重构SLX的内部文件结构,您可以预期SLX的稳定性会降低。例如,在R2014b中,MathWorks已开始将传统的整体blockdiagram.xml的各个部分分解为单独的文件,如stateflow.xml和graphicalInterface.xml

哪些工具可用于解析这些文件

有一些公共可用的库/API用于解析Simulink,但我没有使用它们中的任何一个,所以我不确定它们的工作情况如何

  • (Java)-MDL、SLX
  • (.NET)-MDL
  • (Python)-MDL
您还可以通过搜索Simulink解析器找到其他解析器

如果这些都不起作用,那么一些商业工具将直接解析MDL和SLX,而不是依赖MatlabAPI。您可能会询问一些商用Simulink工具中使用的解析器的许可问题。

Update(2015/04/02) 新版本的具有完整的SLX格式支持。文档不是显式的,但是源代码包含解析它的所有细节

旧答案 rob回答说,支持Simulink的MDL文件格式,还可以解析Stateflow内容。该库是开源的,但唯一的文档是源代码

我们目前(截至2014年9月)正在研究SLX支持,预计在未来1到2个月内发布。如果您在此之前需要代码,请随时与我联系

确实,在使用该库时,您的代码可能会因新的Simulink版本而中断,因为文件格式没有文档记录,我们不得不对大部分文件进行反向工程。但是,我们目前正在积极更新库,以防出现问题,使用源代码,即使我们不在,您也可以修复它

PS:我本想将此作为对rob回答的评论,但我似乎没有足够的声誉这么做:(


披露:我是上述库的开发人员之一。

为什么需要此功能?您正在尝试解析模型文件吗?@P0W我知道解析MDL文件是个坏主意,从SLX文件中可以看出解析SLX文件可能也是个坏主意。不过,我想知道有关此文件格式的知识(实际上这两种格式),因为这是我工作中提到的。如果我发现一个官方的参考资料说“不要解析SLX文件!”那也会很有帮助。我更新了我的问题以反映这一点。唯一的“官方”@DouglasB.stuple IMO parsing.mdl文件格式在.slx出现之前从来都不是一个坏主意。如果可能的话,你可以从.slx中知道你真正需要什么。有几个Simulink API可以做很多事情。我同意@P0W的评论。任何依赖于解析Simulink模型的程序在下一个版本中肯定会崩溃e、 文件格式没有文档记录,可能永远也不会。最好使用API。非常感谢。您编写的内容与我的理解一致,并建立在我的理解基础上。我可以使用Simulink Library for Java从slx文件中获取元数据吗?我使用下一个MATLAB代码将元数据写入slx文件:
h=load_system(pathToFile);set_param(h,“元数据”,属性)