我正在尝试运行一个基本的MATLAB脚本,它定义了一个类,并将该类对象返回给python。我对MATLAB不太了解,而且对Oct2Py也很陌生,所以我可能完全误解了如何做到这一点。任何帮助都将不胜感激。
以下是Matlab文件(取自here)
classdef BasicClass
properties
Value {mustBeNumeric}
end
methods
function r = roundOff(obj)
r = round([obj.Value],2);
end
function r = multiplyBy(obj,n)
r = [obj.Value] * n;
end
end
end
我在python脚本中使用以下代码调用它
from oct2py import octave
octave.addpath(r'C:\Users\i13500020\.spyder-py3\IST')
oclass = octave.class_example(nout=1)
当我运行这个程序时,我会收到一个警告,打印四次,然后是一条错误消息
第一:
warning: struct: converting a classdef object into a struct overrides the access restrictions defined for properties. All properties are returned, including private and protected ones.
然后:
TypeError: 'NoneType' object is not iterable
从Oct2Py页面运行roundtrip example没有任何问题,因此我知道我的安装是正确的
1条答案
按热度按时间q35jwt9p1#
我写了一个小的变通方法来使用定制的matlab类和oct2py。目前,这种方法只支持访问Matlab类的成员函数(而不是属性),因为这正是我所需要的:
按如下方式使用此类:
注意:你可能需要在你的八度音阶代码中有一个init函数来运行设置你的Value变量。