5

我有一个变量exon = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]]]。我想创建一个 mat 文件,如下所示

>>

exon : [3*2 double] [2*2 double]

当我使用 python 代码执行相同操作时,它显示错误消息。这是我的python代码

import scipy.io
exon  = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]]]
scipy.io.savemat('/tmp/out.mat', mdict={'exon': (exon[0], exon[1])})

任何人都可以提出相同的建议,这将是很棒的。在此先感谢 Vipin TS

4

2 回答 2

10

您似乎希望在 Matlab 中将两个不同的数组链接到相同的变量名。这是不可能的。在 MATLAB 中,您可以拥有包含其他数组的元胞数组或结构,但不能只将数组元组分配给单个变量(这就是您在 mdict={'exon': (exon[0], exon 1 )) - Matlab 中没有元组的概念。

您还需要将对象设为 numpy 数组:

import numpy as np
exon = [ np.array([[1, 2], [3, 4], [5, 6]]), np.array([[7, 8], [9, 10]]) ]

这里有 scipy 文档,详细介绍了如何保存不同的 Matlab 类型,但假设您想要单元格数组:

obj_arr = np.zeros((2,), dtype=np.object)
obj_arr[0] = exon[0]
obj_arr[1] = exon[1]
scipy.io.savemat('/tmp/out.mat', mdict={'exon': obj_arr})

这将在 matlab 上产生以下结果:

matlab中的代码结果

或可能(未经测试):

obj_arr = np.array(exon, dtype=np.object)
于 2009-10-29T14:22:37.957 回答
1

Sage is an open source mathematics software which aims at bundling together the python syntax and the python interpreter with other tools like Matlab, Octave, Mathematica, etc...

Maybe you want to have a look at it:

于 2009-10-06T16:02:39.000 回答