用Python创建一个.mat文件

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 T S

2个回答

11
在Matlab中,你似乎想让两个不同的数组与同一个变量名相对应。这是不可能的。在MATLAB中,你可以有包含其他数组的单元格数组或结构体,但你无法将仅由一组数组构成的元组分配给单个变量(这就是你在mdict={'exon': (exon[0], exon1)) 所拥有的内容- 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)

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接