当前位置: 首页 > 面试题库 >

在Python中访问包含Matlab类的.mat文件

端木宏盛
2023-03-14
问题内容

我有一个从Matlab 2012b生成的.mat文件。它包含一个带有用户定义的matlab类的变量。

在python 3.3中使用scipy.io.loadmat加载文件时,得到以下信息:

mat=scipy.io.loadmat('D:\test.mat')
mat
{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Fri Feb 22 15:26:28 2013', '__function_workspace__': array([[ 0,  1, 73, ...,  0,  0,  0]], dtype=uint8), '__globals__': [], '__version__': '1.0', 'None': MatlabOpaque([ (b'futureDS', b'MCOS', b'cStream', [[3707764736], [2], [1], [1], [1], [1]])], 
      dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')])}

我正在寻找访问类型为“ cStream”的“ futureDS”对象,但似乎无法使用mat [‘None’]进行访问。调用mat
[‘None’]简单的结果是:

MatlabOpaque([ (b'futureDS', b'MCOS', b'cStream', [[3707764736], [2], [1], [1], [1], [1]])], 
      dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')])

我被困在这里。我是python的新手,正尝试从matlab移植我的旧工作。任何帮助,将不胜感激。

谢谢。


问题答案:

不幸的是,classdef据我所知,SciPy不支持包含新型类对象(用定义的对象)的mat文件,也不支持任何第三方mat-
file阅读器。__function_workspace__返回mat字典中的该元素以某种未记录且尚未反向工程的方式包含您所需要的信息。

最简单的解决方案是在将自定义类struct保存到磁盘之前,将其自定义类转换为Matlab中的基本对象。只需调用即可实现(尽管有警告)struct(futureDS)。它将所有公共和私有属性公开为纯字段,任何值得其赞扬的第三方读者都可以阅读。

(从技术上讲,Matlab用Matlab数组类型ID为17保存这些对象;官方文档(PDF)仅枚举类型直至15)。



 类似资料:
  • 问题内容: 这就是我现在正在做的。有没有更好的方法来访问超类? 我正在使用Google Web Toolkit进行编程,但是我认为这确实是一个通用的Java问题。 问题答案: 您可以使用所谓的qualified 。 [JLS 15.8.4。合格的](http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8

  • 问题内容: 是否可以用Python读取二进制MATLAB .mat文件? 我已经看到SciPy声称支持读取.mat文件,但是我没有成功。我安装了SciPy 0.7.0版,但找不到该方法。 问题答案: 需要导入,…

  • 本文向大家介绍详解如何在python中读写和存储matlab的数据文件(*.mat),包括了详解如何在python中读写和存储matlab的数据文件(*.mat)的使用技巧和注意事项,需要的朋友参考一下 背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果。

  • 问题内容: 我有一个php文件,我将专门将其用作包含文件。因此,当我直接通过输入URL而不是将其包括在内直接访问它时,我想抛出一个错误而不是执行错误。 基本上我需要在php文件中进行如下检查: 是否有捷径可寻? 问题答案: 通用的“您可能会或可能不会完全控制的在Apache服务器上运行的PHP应用程序”情况的最简单方法是将includes放在目录中,并拒绝对.htaccess文件中的该目录的访问。

  • 我需要在导出的jar文件中包含一些图像文件,我搜索了一下,找到了这个和这个答案,但我不能让它工作。 我在用Maven

  • 问题内容: 我知道与此相关的一些问题,但是它们在Objective-C中。 如何 在实际的iPhone上*使用Swift 访问应用程序中包含的文件?我希望能够从中读取和写入。如果您想看一下,这是我的项目文件。如有必要,我很乐意添加详细信息。 * 问题答案: 只需在应用程序捆绑中搜索资源 但是,您无法写入它,因为它位于应用程序资源目录中,并且必须在文档目录中创建它才能写入 现在您可以从 fileUR