我正在使用matlabpython引擎访问python中的matlab项目中的数据。这很好地工作,但是在python中有效地使用matlab数组确实有一个问题。例如,我想要一个来自matlab的数组,我使用(eng代表matlab引擎):x = eng.eval(arg)
我得到的是matlab.double数组如下所示:
^{pr2}$
看起来还不错。让我们试着抓住一个条目:>>> x[2][1]
5.0
耶!一整排怎么样?在>>> x[0]
matlab.double([1.0,2.0])
。。好吧,至少是吵架了,但我没找到“matlab.double“”前缀。。专栏怎么样?在>>> x[:][0]
matlab.double([1.0,2.0])
等等,什么?我尝试选择所有行,然后从每个行中选择第一个元素,但是我只得到行。事实上:x[i] == x[:][i] == x[i][:]
所以,基本上有两个问题出现了:选一排给我带来了不想要的。”matlab.double“前缀和选择一个列(个人更重要)根本不起作用。有什么建议吗?
我现在所做的是重新读取每个值,并将其保存到一个新的python数组中:c = [[] for _ in range(len(x[0]))]
for i in range(len(x[0])):
for j in range(len(x)):
c[i].append(x[j][i])
这是可行的,但有一个问题:随着数据的增长,代码的速度会大大减慢。当然,如果每个条目实际上已经存储在x中,那么重读它们并不是一件美妙的事
感谢您阅读了这篇长文本,我只是假设我解释了一点,因为可能只有少数人使用python matlab引擎。在