好吧,我为自己正确安装了 mlabwrap 而感到自豪,但现在我无法让它与 matlab 单元一起使用。在 python 中,列表类似于单元格,所以我想我会输入一个列表,mlabwrap 会将其转换为一个单元格。不幸的是,它似乎不是那样工作的。
例如,我有一个 matlab m 文件:
function list_test(x)
display(x);
在python中,如果我输入
mlab.list_test([[1,2],[3,4]])
我得到:
x =
1 2
3 4
因此,mlabwrap 似乎将我的两个嵌套列表转换为 2x2 矩阵,这不是我想要的。
当我尝试
mlab.list_test([[1,2],[3,4,5]])
然后我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/Ben/.virtualenvs/test/lib/python2.7/site-packages/mlabwrap.py", line 607, in mlab_command
return self._do(name, *args, **update({'nout':nout}, kwargs))
File "/Users/Ben/.virtualenvs/test/lib/python2.7/site-packages/mlabwrap.py", line 534, in _do
mlabraw.put(self._session, argnames[-1], arg)
TypeError: a float is required
显然没有骰子。
如果必须的话,我想我可以编写一些 python 代码将列表转换为几个一维数组,使用 mlabwrap 将一维数组输入 matlab 并编写一些 matlab 代码将这些一维数组转换为单元格。但这很混乱,我想知道是否有更简单的方法。mlabwrap 可以以某种方式为我做这件事吗?
这是我的设置的详细信息。操作系统:Mountain Lion (OS X 10.8),Python:2.7,Matlab:2010b,mlabwrap:1.1