从python创建一个.mat文件

时间:2009-10-06 14:38:52

标签: python scipy mat-file

我有一个变量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 个答案:

答案 0 :(得分:8)

您似乎希望在Matlab中将两个不同的数组链接到相同的变量名称。这是不可能的。在MATLAB中,您可以拥有包含其他数组的单元格数组或结构体,但是您不能只将一个数组元组分配给单个变量(这就是您在mdict = {'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文档here,详细介绍了如何保存不同的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中产生以下结果:

code result in matlab

或可能(未经测试):

obj_arr = np.array(exon, dtype=np.object)

答案 1 :(得分:1)

Sage是一个开源数学软件,旨在将python语法和python解释器与Matlab,Octave,Mathematica等其他工具捆绑在一起......

也许你想看看它: