我正在使用Eclipse中从头开始构建的Java模型。在这个模型中重要的是我们将输出保存到MATLAB(.mat)文件中。我不断添加新功能,这需要新的字段,而这些字段又必须在每次迭代时导出到.mat文件。重新启动崩溃的模拟后,我可能必须导入.mat文件。要导出或导入我的.mat文件,请使用JMatIO。
例如,如果我要向我的类CModel添加一个新字段rho_m
(一个简单的double
),我必须添加到我的Save()方法:
mlModel.setField("rho_m", new MLDouble(null, new double[] {rho_m}, 1));
我的Load()方法:
rho_m = ((MLDouble)mlModel.getField("rho_m")).getReal(0);
请注意,即使rho_m
是double
,也需要在JMatIO中将其视为double[]
。这可能与MATLAB面向矩阵和矩阵运算有关。
而不是手动执行此操作(容易出错,难以维护)我想自动执行此过程。理想情况下,我希望我的IDE能够检测CModel中的所有字段,并根据字段的名称和类型编写代码。有没有办法在Java / Eclipse中执行此操作?
我没有接受过低级编程语言的正式培训(是的,Java对我来说是低级别的),而且我还是相对较新的Java。我确实有一些MATLAB的经验。在MATLAB中,我想我可以在for循环中使用eval()
和fieldnames()
来完成我提到的操作。我最后的办法是将Java代码复制粘贴到MATLAB中,然后使用一个巨大的丑陋脚本生成代码。每次我想对模型进行更改时,我都会重新运行MATLAB脚本。
除了这个想法,我发现像UML这样的术语,但是没有背景知识来判断这是否是我正在寻找的。 p>
任何帮助,即使只是向正确的方向推进,也非常感谢。如果我需要进一步澄清任何内容,请告诉我。
答案 0 :(得分:2)
查看您的场景,您正在进行模型驱动的代码生成,也就是说,您有一个模型,并希望根据您当前的模型生成一些代码。因此,您需要一个模型驱动的代码生成器。
我领导了ABSE / AtomWeaver项目,因此我将概述您可以使用AtomWeaver获得所需的内容(但有其他解决方案,如MetaEdit +,XText或Eclipse自己的GMT / EMF子系统)。
AtomWeaver是一个IDE,您可以在其中构建模型并从该模型生成代码。您可以根据需要多次更改模型,然后单击“生成”按钮以获取代码的更新版本。 ABSE是建模方法的名称。
我们不需要详细介绍,但基本上ABSE遵循“构建块”方法。您可以创建一个表示模型特征或概念的模板。然后,您可以将迷你代码生成器与该概念相关联。然后,您可以“实例化”并组合这些构建块以快速构建模型。变量增加了模型的灵活性。
您还可以更改模型,或添加新功能(“块”)并再次生成。这些生成器是使用Lua编程语言构建的,这是一种非常简单的C语言语言。
理解ABSE development method和AtomWeaver IDE的最佳方法是下载IDE并查看示例或尝试教程。是的,你可以免费使用AtomWeaver。