有关这些文件格式的信息有哪些?有哪些工具可用于解析这些文件?
答案 0 :(得分:9)
很少公开信息。这是我发现的一点点:
MDL和SLX是MathWorks专有的文件格式,用于存储Simulink模型。 SLX在Simulink R2012a中引入,并在R2012b中生成默认文件格式。除文件结构外,SLX和MDL文件的内容非常相似。例如,两种格式之间的键值对看起来是相同的。人们经常说解析这些文件是一个坏主意,因为它们可以在Simulink版本之间进行更改(参见例如am304和我上面的评论),但我没有看到太多的证据。
MDL格式似乎是在MathWorks内部开发的。 There seems to have been an MDL parser for python, but it was of limited functionality以及截至2014年5月的website is down。
SLX文件是一个包含XML文件集合的zip文件,大部分模型规范存储在simulink/blockdiagram.xml
中。 @ am304从MathWorks website:
SLX是一个符合Open Packaging的压缩包 约定(OPC)互操作性标准。 SLX存储模型 在XML和其他国际使用Unicode®UTF-8的信息 格式。以SLX格式保存Simulink模型:
与MDL相比,通常会减小文件大小。 MDL和SLX之间的文件大小减小因型号而异。
通过加载和保存包含韩文和中文字符的MDL文件解决以前版本中的一些问题。
启用增量加载和保存。 Simulink通过仅加载所需的部分来优化性能和内存使用 模型并仅保存模型的修改部分。
除了上面的文字之外,还有一些参考文献:
How convert simulink files to XML
http://www.scootersoftware.com/vbulletin/showthread.php?t=11568
http://blog.xogeny.com/blog/dont-zip/
http://blog.developpez.com/matlab/p11469/simulink-2/nouveau-format-slx-pour-les-modeles-simulink
答案 1 :(得分:5)
新版Simulink Library for Java具有完整的SLX格式支持。文档不明确,但源代码包含解析它的所有细节。
正如rob所回答的那样,Simulink Library for Java支持Simulink的MDL文件格式,并且还可以解析Stateflow内容。该库是开源的,但唯一的文档是源代码。
我们目前(截至2014年9月)致力于SLX支持,并期望在未来1或2个月内发布。如果您在此之前需要代码,请随时与我联系。
确实,在使用库时,您的代码可能会破坏新的Simulink版本,因为文件格式没有记录,我们不得不对其中的大部分进行逆向工程。但是,我们目前正在积极更新库以防出现问题,即使我们不在,也可以使用源代码修复它。
PS:我会发布这个作为对rob的回答的评论,但似乎我没有足够的声誉这样做:(
披露:我是上述图书馆的开发者之一。
答案 2 :(得分:4)
有哪些关于这些文件格式的信息?
MathWorks在R2007b中确实有一些documentation用于MDL文件格式。
SLX文件是zipfile容器,其内部结构基于OOXML的OPC格式。 SLX文件包含一个或多个XML文件,其内部结构与MDL文件的内部结构类似,但是采用XML格式。此外,图形等二进制资源可以存储在单独的JPG文件中,而不是文本编码,并直接嵌入到MDL文件中。
随着新功能添加到Simulink,这两种格式都会发生变化,但是当MathWorks重构SLX的内部文件结构时,您可以预期SLX会更不稳定。例如,在R2014b中,MathWorks已经开始将传统的单片blockdiagram.xml的各个部分分解为单独的文件,例如stateflow.xml和graphicalInterface.xml。
有哪些工具可用于解析这些文件?
有一些公开可用的库/ API用于解析Simulink,但我还没有使用它们,所以我不确定它们的工作情况。
您也可以通过搜索 Simulink解析器找到其他人。
如果没有这些技巧,一些商业工具直接解析MDL和SLX,而不是依赖于MATLAB API。您可能会询问许可商用Simulink工具中使用的解析器的许可。