【问题标题】:creating a .mat file from python从 python 创建一个 .mat 文件
【发布时间】:2010-12-04 07:16:58
【问题描述】:

我有一个变量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])})

如果任何人都可以提出相同的建议,那就太好了。 提前致谢 维平T S

【问题讨论】:

    标签: python scipy mat-file


    【解决方案1】:

    您似乎希望在 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 文档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)
    

    【讨论】:

      【解决方案2】:

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

      也许你想看看它:

      【讨论】:

        猜你喜欢
        • 2016-07-21
        • 1970-01-01
        • 2016-03-08
        • 2011-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-19
        • 2017-02-22
        相关资源
        最近更新 更多