从Python创建.mat文件

5 投票
2 回答
37841 浏览
提问于 2025-04-15 14:51

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

1

Sage是一个开源的数学软件,旨在将Python的语法和解释器与其他工具(比如Matlab、Octave、Mathematica等)结合在一起。

也许你想看看它:

11

你似乎想在Matlab中用同一个变量名关联两个不同的数组,但这是不可能的。在Matlab里,你可以使用单元数组(cell arrays)或者结构体(structs),这些可以包含其他数组,但你不能把一组数组直接赋值给一个变量(就像你在mdict={'exon': (exon[0], exon[1])}中做的那样)——在Matlab里没有元组(tuple)这个概念。

你还需要把你的对象变成numpy数组:

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

这里有关于如何保存不同Matlab类型的scipy文档,假设你想要的是单元数组:

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)

撰写回答