如您所知,您可以运行P代码(来自手册):
调用生成的P代码文件的方式与调用派生它的MATLAB .m源文件的方式相同。 例如,要调用文件myfun.p,请键入:
[out,out2,...] = myfun(in1,in2,...);
在大学时我需要执行一个包含.p文件的matplab程序。 该程序有一个GUI工作正常,但我需要通过命令行执行它。
问题是我不知道输入参数类型(和参数数量)以及每个.p文件的输出类型,有没有办法找到它们? (我不想解码它们!)
祝福 狮子座
P.S。:我已经google了很多...
答案 0 :(得分:2)
除非您想遵循作者的建议,否则您必须对该功能执行一些反复试验(我不认为反编译是一个可行的选项)。我们假设我们有以下的pcoded函数:
function [a,b] = dosomething(x,y)
a = x * y;
b = x + y;
end
第一步是发现定义了多少输入和输出参数:
nargin(@dosomething) % 2
nargout(@dosomething) % 2
现在......你应该做的是按如下方式设置你的控制台命令:
[v1,v2] = dosomething(...)
并开始猜测正确的输入类型。一旦函数可以顺利运行直到其代码结束,将为您提供输出类型。如果您对Matlab常见错误有很好的了解,那么您将更容易接近正确的输入类型。例如,如果抛出以下错误:
来自非单元格数组对象的单元格内容引用。
你可以假设正在向量上执行花括号索引,因此为其中一个变量提供的正确类型是一个单元格数组(你在第一个上测试它,然后在另一个上测试它)。 。 等等。当然,您也可以希望作者在函数中包含的一些自定义错误消息可以指向正确的方向...这样一个昂贵的函数毕竟必须实现一个很好的异常处理,不是吗? ; - )
我还建议你开始使用非矢量输入(标量数字等)。一旦函数可以无错误地运行,您可以扩展输入参数的维度,并查看反应以测试函数是否也可以处理多维变量。