Oct2Py 只返回第一个输出参数
Oct2Py only returning the first output argument
我使用 Oct2Py 是为了在我的 Python 代码中使用一些 M 文件。假设我有这个简单的 Matlab 函数:
function [a, b] = toto(c);
a = c;
b = c + 1;
end
如果我在 Octave 中调用它,会发生什么情况显然是:
>> [x,y] = toto(3)
x = 3
y = 4
现在,如果我在 Python 中使用 oct2py 调用它:
from oct2py import octave
my_dir = "D:\My_Dir"
octave.addpath(my_dir)
a,b = octave.toto(3)
这个returns:
TypeError: 'int' object is not iterable
似乎 octave.toto(n) 只有 returns 第一个值,而我期望有两个...有人可以向我解释我应该做什么吗?谢谢
在旧版本的 Oct2Py(3.x 及更早版本)中,输出参数的数量是从 Python 中的调用推断出来的,因此如果您想要多个输出,您只需请求两个输出
a, b = octave.toto(3)
但是,as of version 4.0 您现在需要在函数调用中使用 nout
kwarg 来显式指定所需的输出参数数量
a, b = octave.toto(3, nout=2)
来自 4.0 发行说明
Removed inferred nout
for Octave function calls; it must be explicitly given if not 1. The old behavior was too surprising and relied on internal logic of the CPython interpreter.
我使用 Oct2Py 是为了在我的 Python 代码中使用一些 M 文件。假设我有这个简单的 Matlab 函数:
function [a, b] = toto(c);
a = c;
b = c + 1;
end
如果我在 Octave 中调用它,会发生什么情况显然是:
>> [x,y] = toto(3)
x = 3
y = 4
现在,如果我在 Python 中使用 oct2py 调用它:
from oct2py import octave
my_dir = "D:\My_Dir"
octave.addpath(my_dir)
a,b = octave.toto(3)
这个returns:
TypeError: 'int' object is not iterable
似乎 octave.toto(n) 只有 returns 第一个值,而我期望有两个...有人可以向我解释我应该做什么吗?谢谢
在旧版本的 Oct2Py(3.x 及更早版本)中,输出参数的数量是从 Python 中的调用推断出来的,因此如果您想要多个输出,您只需请求两个输出
a, b = octave.toto(3)
但是,as of version 4.0 您现在需要在函数调用中使用 nout
kwarg 来显式指定所需的输出参数数量
a, b = octave.toto(3, nout=2)
来自 4.0 发行说明
Removed inferred
nout
for Octave function calls; it must be explicitly given if not 1. The old behavior was too surprising and relied on internal logic of the CPython interpreter.