我正在使用MATLAB脚本调整机器上的控制系统。调整完成后,我想要一个包含文本的报告(特别是序列号,日期/时间和调整期间确定的值)和图,特别是传递函数。
你推荐什么?
我使用的任何解决方案都应与MATLAB编译器兼容,以便我可以将我的解决方案分发给现场工程师团队。
理想情况下,报告将是PDF文档。
MATLAB报告生成器似乎不是正确的产品,因为看起来我必须将我的脚本分解成小块并将它们嵌入到报告模板中。我的脚本包含用户干预和更改值的机会,或者如果情节看起来不正确则拒绝调整,而我的预感是,如果代码从报告生成器运行,这将很难。此外,如果代码结构由报告模板的要求决定,我担心代码结构和可维护性将会丢失。
如果我的假设是错误的,请发表评论。
更新
我现在已经切换到使用版本为r2016b的MATLAB报告生成器,它对我的编译代码用户非常有效。不幸的是,这意味着拥有MATLAB许可证的同事也需要购买报告生成器,以便使用我的工具编写脚本。
答案 0 :(得分:4)
作为MATLAB报告生成器的开发经理,我担心这个问题可能会给报告生成器的功能留下错误的印象。
首先,报告生成器不要求您将脚本分成小块并在模板中运行它们。你可以选择,在某些情况下,它是有道理的,但这不是一个要求。事实上,许多Report Generator应用程序使用MATLAB脚本或程序与用户交互,在MATLAB工作区中生成数据,最后一步,从工作区数据生成报告。
此外,从R2014b版本开始,MATLAB Report Generator附带了一个文档生成API,称为DOM API,它允许您在MATLAB程序中嵌入文档生成语句。例如,您可以以编程方式创建文档对象,添加和格式化文本,段落,表格,图像,列表和子文档,并输出Microsoft Word,HTML或PDF输出,具体取决于您选择的输出类型。您甚至可以使用Word或HTML编辑器以编程方式填写您创建的表单中的空白。
API在Windows,Linux和Mac平台上运行,并在所有三个上生成Word和HTML输出,而不使用Word。在Windows上,它使用Word引擎从它生成的Word文档生成PDF输出。
最新版本的MATLAB报告生成器引入了一个PowerPoint API,其功能类似于DOM API。如果您需要在MATLAB应用程序中包含报告生成,请不要根据过去的印象排除MATLAB报告生成器。你可能会对它变得多么强大感到惊讶。
答案 1 :(得分:3)
我做了很多。你是对的,MATLAB Report Generator通常不是一个很好的解决方案。 @Max建议正确的方法(通过其COM接口自动化Word),但我会根据我的经验添加一些额外的评论和提示。
print(figHandle, 'dbitmap')
将其复制到剪贴板并使用Worksheet.Range('A1').PasteSpecial
粘贴到Excel。Workbook.ExportAsFixedFormat('xlTypePDF', pathToOutputFile)
。希望有所帮助!
答案 2 :(得分:2)
我认为你对报告生成器是正确的。
在我看来,最快/最简单的方法是在html文档中生成报告。为此你只需要数字并写一个文本文件,转换应该是微不足道的。
相似的方法是创建一个Latex文件。然后从中创建一个pdf - 尽管如此,您需要在已部署的计算机上安装latex。
最后,您可以在Matlab中使用Java的良好集成。您可以使用多个库 - 例如this。但我想知道所有的并发症是否值得。
答案 3 :(得分:1)
您是否考虑通过其ActiveX接口驱动Microsoft Word?我在编译的Matlab程序中完成了这项工作,效果很好。查看actxserver()
的Matlab帮助:您要创建的对象的类型为Word.Application
。
编辑添加:要将数字输入文档,请使用-dmeta
参数将其保存为。print()
,然后将其添加到文档中,如下所示:
WordServer.Selection.InlineShapes.AddPicture(fileName);