标签: mat-file

如何使用Scipy.io.loadmat将Matlab mat文件中的字符串数组加载到Python列表或元组中

我是Python新手的Matlab用户.我想在Matlab中将一个字符串的单元格数组写入Mat文件,并使用Python(可能是scipy.io.loadmat)将这个Mat文件加载到某个类似的类型中(例如字符串列表或字符串元组).但是loadmat将东西读入数组,我不知道如何将其转换为列表.我尝试了"tolist"函数,它不能像我预期的那样工作(我对Python数组或numpy数组的理解不够).例如:

Matlab代码:

cell_of_strings = {'thank',  'you', 'very', 'much'};
save('my.mat', 'cell_of_strings');
Run Code Online (Sandbox Code Playgroud)

Python代码:

matdata=loadmat('my.mat', chars_as_strings=1, matlab_compatible=1);
array_of_strings = matdata['cell_of_strings']
Run Code Online (Sandbox Code Playgroud)

然后,变量array_of_strings是:

array([[[[u't' u'h' u'a' u'n' u'k']], [[u'y' u'o' u'u']],
    [[u'v' u'e' u'r' u'y']], [[u'm' u'u' u'c' u'h']]]], dtype=object)
Run Code Online (Sandbox Code Playgroud)

我不知道如何将这个array_of_strings转换为Python列表或元组,以便它看起来像

list_of_strings = ['thank',  'you', 'very', 'much'];
Run Code Online (Sandbox Code Playgroud)

我不熟悉Python或numpy中的数组对象.我们将非常感谢您的帮助.

python arrays string matlab mat-file

6
推荐指数
1
解决办法
5311
查看次数

验证.mat文件存在且不是Corrupt - Matlab

我有2个独立的Matlab工作人员,FIRST获取/保存数据和SECOND读取它(并进行一些计算等).

FIRST将数据保存为硬盘上的.mat文件,而SECOND从那里读取数据.SAVE这个数据需要大约20秒,如.mat和8millisec DELETE.在保存数据之前,FIRST会删除旧文件,然后保存更新的版本.

SECOND如何验证数据是否存在is not corrupt?我可以使用exists但不告诉我数据是否损坏.例如,如果SECOND尝试在FIRST保存时准确读取数据,则exists传递但LOAD会给出错误 - 数据损坏等.

谢谢.

concurrency file-io matlab mat-file

6
推荐指数
1
解决办法
3077
查看次数

Matlab无法加载Dymola创建的*.mat文件

我的问题是打开由Dymola生成的som*.mat文件.对于小型模式,有时候matlab打开创建的*.mat文件没有问题.然后我可以看到工作区中的结构.但我还有一个巨大的模拟模型,有31.536.000个数据点.对于这种模式,Matlab无法打开它.我总是得到提示

Error using load
Unable to read MAT-file C:\Users\Patrick\Desktop\DymolaWork\GridHH_SLP.mat

File may be corrupt.
Run Code Online (Sandbox Code Playgroud)

我的Matlab版本是2014a 64bit,我的Dymola版本是2014 FD001 64bit.我还尝试使用mathworks主页上提供的工具解决问题,以解决损坏的变量名称(loadfixnames/savebadnames).但这并不是很好.因为此工具无法恢复矩阵data_2.任何人都可以给我一个解决这个问题的建议.非常感谢你

matlab modelica mat-file dymola

6
推荐指数
1
解决办法
1716
查看次数

如何从MATLAB确定MAT文件的版本?

我想知道是否有办法确定特定的MAT文件是v4,v6,v7还是v7.3?

我正在寻找一种可以使用MATLAB代码确定版本的解决方案,最好不必将数据加载到内存中.

matlab mat-file

6
推荐指数
1
解决办法
1933
查看次数

如何在python中加载大型.mat文件?

我有非常大的.mat文件(~1.3 GB),我试图在我的Python代码(IPython笔记本)中加载.我试过了:

import scipy.io as sio
very_large = sio.loadmat('very_large.mat')
Run Code Online (Sandbox Code Playgroud)

我的笔记本电脑有8 GB RAM挂起.我保持系统监视器打开,看到内存消耗稳定增加到7 GB,然后系统冻结.

我究竟做错了什么?有什么建议/解决方法吗?

编辑:

有关数据的更多详细信息:以下是数据的链接:http://ufldl.stanford.edu/housenumbers/

我感兴趣的特定文件是extra_32x32.mat.从描述:加载.mat文件创建2个变量:X是包含图像的4-D矩阵,y是类标签的向量.为了访问图像,X(:,:,:,i)给出第i个32×32 RGB图像,其类标签为y(i).

因此,例如,当以下列方式加载时,来自同一页面(test_32x32.mat)的较小的.mat文件:

SVHN_full_test_data = sio.loadmat('test_32x32.mat')
print("\nData set = SVHN_full_test_data")
for key, value in SVHN_full_test_data.iteritems():
    print("Type of", key, ":", type(SVHN_full_test_data[key]))
if str(type(SVHN_full_test_data[key])) == "<type 'numpy.ndarray'>":
    print("Shape of", key, ":", SVHN_full_test_data[key].shape)
else:
    print("Content:", SVHN_full_test_data[key])
Run Code Online (Sandbox Code Playgroud)

生产:

Data set = SVHN_full_test_data
Type of y : <type 'numpy.ndarray'>
Shape of y : (26032, 1)
Type of X : <type 'numpy.ndarray'>
Shape of …
Run Code Online (Sandbox Code Playgroud)

python matlab scipy bigdata mat-file

6
推荐指数
1
解决办法
1644
查看次数

在Python中读取.mat文件.但数据的形状发生了变化

 % save .mat file in the matlab    
train_set_x=1:50*1*51*61*23;   
train_set_x=reshape(train_set_x,[50,1,51,61,23]);   
save(['pythonTest.mat'],'train_set_x','-v7.3');
Run Code Online (Sandbox Code Playgroud)

在matlab中获得的数据大小为(50,1,51,61,23).

我使用此链接的指令在Python中加载.mat文件.

代码如下:

import numpy as np, h5py
f = h5py.File('pythonTest.mat', 'r')
train_set_x = f.get('train_set_x')
train_set_x = np.array(train_set_x)
Run Code Online (Sandbox Code Playgroud)

train_set_x.shape的输出是(23L, 61L, 51L, 1L, 50L).预计会是(50L, 1L, 51L, 61L, 23L).所以我改变了形状

train_set_x=np.transpose(train_set_x, (4,3,2,1,0))
Run Code Online (Sandbox Code Playgroud)

我很好奇Python和matlab之间数据形状的变化.我的代码中有错误吗?

python file-io matlab numpy mat-file

6
推荐指数
1
解决办法
1940
查看次数

R:帮助将特定的.mat文件读入R中

所以我一直在尝试将这个特殊的.mat文件读入R.我不太了解matlab,但我知道R.matlab包只能将未压缩的数据读入R,并将其保存为未压缩我需要通过使用在matlab中保存它 save new.mat -v6.

好吧,所以我这样做了,但是当我readMat("new.mat")在R中使用时,它只是被卡住了永远.我也尝试过使用包hdf5:

> hdf5load("new.mat", load=FALSE)->g
Error in hdf5load("new.mat", load = FALSE) : 
  can't handle hdf type 201331051
Run Code Online (Sandbox Code Playgroud)

我不确定这个问题是什么,但如果有人想要弄清楚这个问题,那么该文件位于http://dibernardo.tigem.it/MANTRA/MANTRA_online/Matlab_Code%26Data.html ,称为库存. mat(第一个文件).

谢谢你的帮助!

matlab r mat-file matlab-load

5
推荐指数
1
解决办法
8170
查看次数

MATLAB - 警告:变量“vol”无法保存到版本早于 7.3 的 MAT 文件中?

我有一个800x6元胞数组vol,其第一到第五列是双精度矩阵,第六列是200x200x2003D 双精度矩阵。我试图将其保存到一个变量,更具体地说是一个 .mat 文件。

>> save('./vol.mat', 'vol');
Warning: Variable 'vol' cannot be saved to a MAT-file whose version is older than 7.3.
To save this variable, use the -v7.3 switch.
Skipping... 
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?我应该如何修复它?

PS:我不太愿意将此元胞数组保存为文本文件,因为这样做会“破坏”结构。

matlab save mat-file

5
推荐指数
1
解决办法
2641
查看次数

在Matlab中无法保存真正的大矩阵

我有一个大数组(1024x1024x360),我想将它保存到mat文件.我试试的时候

A=rand(1024,1024,360)
save('filename.mat','A');
Run Code Online (Sandbox Code Playgroud)

变量是在工作区中创建的,文件正在创建,但它仍然是空的......我在Win7-64机器上使用Matlab 2012a,为什么会这样?

matlab save mat-file

4
推荐指数
1
解决办法
4382
查看次数

保存.mat文件,使用-v7.3开关?

我正在运行一个m文件,创建两个变量,ClusWatts_Map.我想将两个变量保存到以".mat"结尾的文件中.两个变量的尺寸为(1152,241,319),其中1152为360度经度,增量为0.3125度,241为纬度,30S-30N为0.25度增量,超过319个时间步长.代码一直工作到最后,我得到错误:

[Warning: Variable 'Clus' cannot be saved to a MAT-file whose version is older
than 7.3.
To save this variable, use the -v7.3 switch.
Skipping...] 
[Warning: Variable 'Watts_Map' cannot be saved to a MAT-file whose version is
older than 7.3.
To save this variable, use the -v7.3 switch.
Skipping...] 
Run Code Online (Sandbox Code Playgroud)

我使用的是Matlab版本R2014a,所以会认为这是最新版本.此外,我在较小的空间域(但超过2920时间步长)上运行相同的确切代码而没有错误.

%  Clear all variables, initialize counter, indexed by timestep
clc;
clear all;

rain = NaN(1152,241,319);
Clus = NaN(1152,241,319);
Areas_Final = NaN(500,319); 
Wattage_Final = NaN(500,319);
Cluster_size = …
Run Code Online (Sandbox Code Playgroud)

matlab mat-file

4
推荐指数
1
解决办法
5992
查看次数

标签 统计

mat-file ×10

matlab ×10

python ×3

file-io ×2

save ×2

arrays ×1

bigdata ×1

concurrency ×1

dymola ×1

matlab-load ×1

modelica ×1

numpy ×1

r ×1

scipy ×1

string ×1