【问题标题】:Get input arguments and output of matlab pcode file获取matlab pcode文件的输入参数和输出
【发布时间】:2018-09-18 18:00:20
【问题描述】:

如您所知,您可以运行 P 代码(来自手册):

您调用生成的 P 代码文件的方式与调用从中派生它的 MATLAB .m 源文件的方式相同。 例如,要调用文件 myfun.p,请键入:

[out, out2, ...] = myfun(in1, in2, ...);

在大学里,我需要执行一个包含 .p 文件的 matplab 程序。 该程序有一个运行良好的 GUI,但我需要通过命令行执行它。

问题是我不知道每个 .p 文件的输入参数类型(和参数数量)和输出类型,有没有办法找出它们?(我不想解码它们!)

最好的祝愿 狮子座

P.S.:我已经用谷歌搜索了很多......

【问题讨论】:

  • 谢谢,我刚试过但不幸的是他没有提供任何帮助描述:/
  • 我确实联系了开发人员,但他想要 150 欧元给我发送我不想要的完整源代码,他不会帮助我!有没有办法只解码我需要的信息而不是整个程序,或者我可以使用 Matlab 以某种方式给我需要的信息?
  • 从 GUI 搜索 pcode 的实现 - 然后记录 GUI 函数使用的输入和输出。这将是缓慢而乏味的,但您将捕获 GUI 如何使用代码,以便您可以复制......
  • 会是个好主意,但 gui 也是我运行的 .p 程序(一切都是 pcode...)
  • 我就是这么做的,但他不给我信息,要我购买完整的源代码...

标签: matlab


【解决方案1】:

除非你想听从作者的建议,否则你必须对函数进行一些试错逆向工程(我不认为反编译是一个可行的选择)。假设我们有以下 pcoded 函数:

function [a,b] = dosomething(x,y)
    a = x * y;
    b = x + y;
end

第一步在于发现定义了多少输入和输出参数:

nargin(@dosomething) % 2
nargout(@dosomething) % 2

现在...您应该按如下方式设置控制台命令:

[v1,v2] = dosomething(...)

并开始猜测正确的输入类型。一旦函数可以顺利运行直到其代码结束,就会为您提供输出类型。如果您对 Matlab 常见错误有很好的了解,您将很容易越来越接近正确的输入类型。例如,如果抛出以下错误:

来自非单元格数组对象的单元格内容引用。

您可以假设正在对向量执行花括号索引,因此为其中一个变量提供的正确类型是元胞数组(您在第一个上测试它,然后最终在另一个上测试它).. 。 等等。当然,你也可以希望作者在函数中包含一些自定义的错误信息,可以为你指明正确的方向……这样一个espensive的函数毕竟必须实现一个很好的异常处理,不是吗? ;-)

我还建议您开始使用非向量输入(标量等)。一旦函数可以正常运行,您就可以扩展输入参数的维度并查看反应以测试该函数是否也可以处理多维变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2013-06-16
    相关资源
    最近更新 更多