【问题标题】:Using python to create a .mat file with a cell array in it使用 python 创建一个 .mat 文件,其中包含一个单元格数组
【发布时间】:2022-01-04 17:40:11
【问题描述】:

我正在尝试创建一个带有单元格的 mat 文件。我尝试应用我在互联网上找到的一些解决方案,但没有一个有效。

我希望最后的代码是这样的:

import scipy.io as sio

l = [ [ [1,2,3], [4,5,6] ], [ [10, 20, 30] , [40, 50, 60] ] ]

c = # Some code to make it appear as a cell array in matlab

sio.savemat('f.mat', { cell : c })

所以最后的单元格数组看起来像: [ [1,2,3], [4,5,6] ] [ [10, 20, 30] , [40, 50, 60] ]

【问题讨论】:

  • 我建议在 MATLAB 中创建一个示例单元格和/或矩阵,保存它,然后查看 loadmat 生成的内容。 numpy 数字 dtype 数组作为 matrix 传输,尽管 order 可能会发生变化。我认为单元格在numpy 中呈现为对象 dtype 数组。但是实验。
  • 我测试了它,你是对的,它的 dtype 是 object 的 np 数组创建了一个 matlab 单元格。谢谢!

标签: python matlab scipy cell-array


【解决方案1】:

要在 .mat 文件中创建单元格,python 中对应的数组应该是 np.arrat,其 dtype 为 np.object。

应该是这样的:

import numpy as np
import scipy.io as sio
c = np.array( array, dtype=np.object)
sio.savemat('file.mat', '{'cell' : c})

感谢@hpaulj commented 这个建议在这里,我检查了它,它似乎有效。

【讨论】:

  • 你的代码中的 np 是什么?缺少导入?
  • @pippo1980 是的,np 是 numpy 的常见缩写。将导入添加到代码中。
  • 非常感谢!!!!
猜你喜欢
  • 2010-12-04
  • 1970-01-01
  • 2020-05-02
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-21
  • 1970-01-01
相关资源
最近更新 更多