虽然我对python-matlab-
bridge,Nipype或PyMAT不太熟悉,但是我已经对mlabwrap做了大量的工作,并且我将尽力回答关于该软件包的问题。
首先,如果您使用功能而不是脚本来工作,将会容易得多。让我们将Matlab脚本重播为一个函数,
myFunction.m如下所示:
function myFunction(v_input, directory, file_name) vid = videoinput(v_input); img = getsnapshot(vid); location = [directory file_name] imwrite(img, location,'png');
然后,您可以使用
mlabwrap.mlab,从python调用此函数,为函数参数传入字符串。所有Matlab函数(包括用户定义的函数)都可以作为属性从
mlabwrap.mlab模块中获得。
>>> from mlabwrap import mlab>>> mlab.myFunction('testadaptor', './', 'image.png')mlabwrap会将您的字符串转换为Matlab可读的格式,并将其作为参数传递给您的函数。如果
AttributeError引发,通常意味着您的函数不在Matlab路径上。您可以使用以下命令添加它:
>>> mlab.path(mlab.path(), 'C:functiondirectory')
提醒您,mlabwrap会自动在Python和Matlab之间来回转换某些参数类型,例如字符串或numpy数组。但是,有许多类型无法转换,例如Matlab结构和类。在这种情况下,它将
MLabObjectProxy从Matlab函数返回an
。这些代理对象无法在Python中操作或转换为Python类型,但可以通过mlabwrap成功传递到其他Matlab函数中。通常,对于具有复杂输出的函数,最好将该输出写入Matlab函数中的文件,并在Python端从该文件导入数据。祝好运!



