使用 scipy.io loadmat 将 Matlab 结构导入 python 时的值错误
Posted
技术标签:
【中文标题】使用 scipy.io loadmat 将 Matlab 结构导入 python 时的值错误【英文标题】:Wrong values when importing Matlab struct into python using scipy.io loadmat 【发布时间】:2020-01-23 10:51:21 【问题描述】:我有一个包含 750x1 双结构的 Matlab 文件。所有单元格都包含数字“18”
我在 Python 中加载这个文件,使用:
loadmat(file_name, squeeze_me=True, struct_as_record=False)
令我惊讶的是,生成的 numpy.ndarray 中的所有单元格都包含数字“19”(dtype int)
我尝试设置mat_dtype=True
,但唯一的区别是结果类型。导入的单元格仍然包含“19”而不是“18”。
有人知道为什么会发生这种汇总/增量吗?
【问题讨论】:
我不喜欢 matlab 和 python,但是看看这个:***.com/questions/874461/read-mat-files-in-python 有另一种加载文件的方法 对不起,这与我的问题无关。 你尝试用 numpy 还是 pandas 加载它?scipy.io.loadmat
加载 mat 文件并将结构转换为 numpy ndarray。
从 MATLAB struct
到 numpy 数组的映射可能会令人困惑(对象 dtype 数组的层等),但它不应更改元素的值。但是如果没有示例文件和/或一些代码,我们将无能为力。使用 MATLAB 代码,我也许可以生成带有 octave
的 .mat,然后尝试加载它。
【参考方案1】:
scipy 或 loadmat 没有任何问题,结果证明我是个白痴,没有注意到我为变量分配了不同的结构(结果是用 19s 填充)。
问题尴尬地解决了……
【讨论】:
以上是关于使用 scipy.io loadmat 将 Matlab 结构导入 python 时的值错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 scipy.io.loadmat 从 .mat Matlab 文件中将字典键转换为 Python 中具有相同值的变量名
Scipy IO Loadmat 错误:ValueError:Mat 4 mopt 格式错误