标签: mat-file

MATLAB:将几个变量保存到"-v7.3"(HDF5).使用"-append"标志时,.mat文件似乎更快.怎么会?

注意: 这个问题涉及2011年使用旧的MATLAB版本(R2009a)观察到的问题.根据2016年7月以下的更新,MATLAB中的问题/错误似乎不再存在(使用R2016a进行测试;向下滚动到问题末尾以查看更新).

我正在使用MATLAB R2009b,我需要编写一个更大的脚本,将更大的.zip文件集的内容转换为v7.3 mat文件(带有底层的HDF5-datamodel).读书还可以.问题在于储蓄.实际上没有问题.使用save命令可以很好地保存我的文件.

从某种意义上说,我的问题更多:为什么我在MATLAB中观察到以下令人惊讶的(对我来说)行为?

让我们来看看我的问题.在当前的测试场景中,我将生成一个输出:A -v7.3 mat-file.此.mat文件将包含40 个块作为单个变量.每个变量将从1到40命名为"block_NNN",并包含一个带字段frameblockNo的结构.场包含480x240x65的uint8 imagedata序列(这里只是使用randi生成的随机数据).字段块包含块编号.

备注:在真实的脚本中(我还没有完成)我将完成上述总共370次,转换总共108GB的原始数据.这就是为什么我关注以下内容.

无论如何,首先我定义一些通用变量:

% some sizes for dummy data and loops:
num_blockCount = 40;
num_blockLength = 65;
num_frameHeight = 480;
num_frameWidth = 240;

然后,我生成一些形状和大小与实际原始数据相同的虚拟代码:

% generate empty struct:
stu_data2disk = struct();

% loop over blocks:
for num_k = 1:num_blockCount

   % generate block-name:
   temp_str_blockName = sprintf('block_%03u', num_k);

   % generate temp struct for current block:
   temp_stu_value …

file-io matlab file hdf5 mat-file

11
推荐指数
1
解决办法
6350
查看次数

在python中访问包含matlab类的.mat文件

我有一个从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')])}
Run Code Online (Sandbox Code Playgroud)

我希望访问类型为"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')])
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

python matlab class mat-file

11
推荐指数
1
解决办法
3759
查看次数

在不使用matlab头文件和库的情况下编写MAT文件

我有一些数据,我想保存到MAT文件(版本4或5,或任何版本,就此而言).问题:我想在不使用matlab库的情况下这样做,因为这个代码不需要在带有matlab的机器上运行.我的程序使用Java和C++,因此用这些语言实现的任何现有库都可以帮助我...

我做了一些研究但没有在Java/C++中找到任何东西.但是,我发现python上的scipy用mio4.py或实现了这个mio5.py.我想过在java或C++上实现它,但它似乎有点超出我的时间表.

所以问题是:Java或C/C++中是否有允许在不使用Matlab库的情况下保存MAT文件的库?

非常感谢

c++ java matlab mat-file

10
推荐指数
2
解决办法
6007
查看次数

在python中访问时如何保留matlab结构?

我有一个我使用的mat文件

from scipy import io
mat = io.loadmat('example.mat')
Run Code Online (Sandbox Code Playgroud)

从matlab开始,example.mat包含以下结构

    >> load example.mat
    >> data1

    data1 =

            LAT: [53x1 double]
            LON: [53x1 double]
            TIME: [53x1 double]
            units: {3x1 cell}


    >> data2

    data2 = 

            LAT: [100x1 double]
            LON: [100x1 double]
            TIME: [100x1 double]
            units: {3x1 cell}
Run Code Online (Sandbox Code Playgroud)

在matlab中,我可以像data2.LON一样轻松访问数据.它在python中并不是那么简单.虽然喜欢它,但它给了我几个选项

mat.clear       mat.get         mat.iteritems   mat.keys        mat.setdefault  mat.viewitems   
mat.copy        mat.has_key     mat.iterkeys    mat.pop         mat.update      mat.viewkeys    
mat.fromkeys    mat.items       mat.itervalues  mat.popitem     mat.values      mat.viewvalues    
Run Code Online (Sandbox Code Playgroud)

有可能在python中保留相同的结构吗?如果没有,如何最好地访问数据?我正在使用的当前python代码非常难以使用.

谢谢

python matlab structure preserve mat-file

10
推荐指数
2
解决办法
2万
查看次数

有没有办法在Perl中读取MATLAB的.mat文件?

我在MATLAB中生成了一些我想用Perl处理的数据.我将MATLAB中的数据保存在.mat文件中.有没有办法在Perl中阅读它?

perl file-io matlab mat-file

9
推荐指数
1
解决办法
1620
查看次数

如何在MATLAB中加载大文件(~150MB)?

我有一个矩阵形式的大型MATLAB文件(150MB)(即4070x4070).我需要在MATLAB中处理这个文件,但我似乎无法加载这个文件.我收到了"内存不足"的错误.有没有其他方法可以加载这个大小的文件?我使用的是32位处理器,并且有2GB的RAM.请帮助我,我在处理这个问题时已经筋疲力尽了.

memory file-io matlab mat-file

9
推荐指数
2
解决办法
9234
查看次数

使用savemat保存和加载Python dict会导致错误

这是我得到的错误的最小例子.如果我正确理解文档,这应该是有效的,但似乎我没有.

a={}
a['test1']=1
a['test2']=2
a['test3']=3
import scipy.io as io
io.savemat('temp',{'a':a})
b = io.loadmat('temp')
b['a'].keys()

Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'keys'
Run Code Online (Sandbox Code Playgroud)

python scipy mat-file

9
推荐指数
1
解决办法
3万
查看次数

如何为我的机器加载内存太大的.mat文件的一部分?

我有一个我想要处理的大.mat文件,但是它太大而不适合单个加载.我想加载它的部分,每次只访问重要的参数.所以我几乎有两个问题:

  1. 如何在不加载的情况下访问mat文件的变量名称?
  2. 如何只将其中一个加载到工作区?

谢谢!

matlab mat-file

8
推荐指数
2
解决办法
5758
查看次数

如何使用Python中的loadmat访问从.mat文件导入的结构中的字段?

按照这个问题(并回答)如何读取使用Scipy在Matlab中创建的.mat文件,我想知道如何访问导入结构中的字段.

我在Matlab中有一个文件,我可以从中导入一个结构:

>> load bla % imports a struct called G
>> G

G = 

         Inp: [40x40x2016 uint8]
         Tgt: [8x2016 double]
         Ltr: [1x2016 double]
    Relevant: [1 2 3 4 5 6 7 8]
Run Code Online (Sandbox Code Playgroud)

现在我想在Python中做同样的事情:

x = scipy.io.loadmat('bla.mat')
>>> x
{'__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Wed Jun 07 21:17:24 2006', 'G': array([[<scipy.io.matlab.mio5.mat_struct object at 0x0191F230>]], dtype=object), '__globals__': []}
>>> x['G']
array([[<scipy.io.matlab.mio5.mat_struct object at 0x0191F230>]], dtype=object)
>>> G = x['G']
>>> G
array([[<scipy.io.matlab.mio5.mat_struct object at …
Run Code Online (Sandbox Code Playgroud)

python file-io matlab scipy mat-file

7
推荐指数
1
解决办法
9468
查看次数

使用scipy.io.loadmat将字典键转换为Python中来自.mat Matlab文件的相同值的变量名

我试图使用scipy.io.loadmat从.mat文件中加载一个基本字典temp = {'key':array([1,2])}.将loadmat()返回的Python字典文件中的键转换为变量名称,其值与表示键相同.

例如:

temp = {'key':array([1,2])}
Run Code Online (Sandbox Code Playgroud)

转换成

key = array([1,2])
Run Code Online (Sandbox Code Playgroud)

我知道如何使用temp.keys()获取密钥.然后抓取项目很简单,但是如何强制temp.keys()中的字符串列表是变量名而不是字符串.

我希望这是有道理的,但这可能很容易,我只是想不出怎么做.

干杯

python matlab numpy scipy mat-file

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

mat-file ×10

matlab ×9

python ×5

file-io ×4

scipy ×3

c++ ×1

class ×1

file ×1

hdf5 ×1

java ×1

memory ×1

numpy ×1

perl ×1

preserve ×1

structure ×1