我有一个变量exon = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]]]
。我想创建一个像以下
>>
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
答案 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中产生以下结果:
或可能(未经测试):
obj_arr = np.array(exon, dtype=np.object)
答案 1 :(得分:1)
Sage是一个开源数学软件,旨在将python语法和python解释器与Matlab,Octave,Mathematica等其他工具捆绑在一起......
也许你想看看它: