假设您有以下.m脚本:
% foo.m
function foo = run()
disp('Hello!!');
foo = 1;
end
现在,您使用以下命令从python执行foo.m:
import matlab.engine
eng = matlab.engine.start_matlab()
py_foo = eng.foo()
此代码将设置py_foo = 1
并将显示输出Hello
。如何抑制matlab输出?
答案 0 :(得分:2)
我回答我的问题。
我没有仔细阅读有关Python API的matlab文档。按照this page的说明,我的问题的正确答案是:
import matlab.engine
import io
eng = matlab.engine.start_matlab(stdout=io.StringIO())
py_foo = eng.foo()
输出:
// no output! :D
如果您使用exec()
(并且在这种情况下非常确定用户输入),请记住传递给exec()的字符串中的import io
,即:
import matlab.engine
import io // this is useless!!
eng = matlab.engine.start_matlab()
str = "import io;eng.foo(stdout=io.stringIO())" // put it here
loc = {}
exec(str, {"eng" : eng}, loc)
py_foo = loc["foo"]