标签: mat-file

用Python读取.mat文件

有没有人在Python中阅读二进制Matlab .mat文件的成功经验?

(我已经看到有人loadmat()声称支持读取.mat文件,但是我没有成功.我安装了loadmat()0.7.0版,我找不到loadmat()方法)

python file-io matlab scipy mat-file

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

在python中读取v 7.3 mat文件

我正在尝试使用以下代码读取matlab文件

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

它给了我以下错误

raise NotImplementedError('Please use HDF reader for matlab v7.3 files')
NotImplementedError: Please use HDF reader for matlab v7.3 files
Run Code Online (Sandbox Code Playgroud)

所以任何人都可以遇到同样的问题,并可以取悦任何示例代码

谢谢

python io matlab mat-file

52
推荐指数
6
解决办法
5万
查看次数

MATLAB:.mat版本之间的差异

官方文件规定如下:

在此输入图像描述.但我注意到除了上表中所述的其他重要区别之外.

例如,在MATLAB中保存一个占用176 MB内存的大约6,000个元素的单元格数组,根据我是使用-v7还是-v7.3,给出了以下结果:

  • 使用-v7:文件大小= 15 MB,保存和加载速度很快.
  • 使用-v7.3:文件大小= 400 MB,保存和加载非常 (可能部分原因是文件很大).

有没有人注意到这些差异?

更新1:正如回复指出的那样,-v7.3依赖于HDF5并且根据Mathworks,"这种格式具有显着的存储开销",尽管不清楚这种开销是否真的是由于格式本身,还是由于MATLAB相反,实现和处理HDF5.

更新2:@Andrew Janke向我们指出了这个非常有用的PDF(显然在网上没有HTML格式).有关更多详细信息,请参阅@Amro提供的答案中的注释.

这一切都需要我下一个问题:是否有任何替代方案,结合了两者的优点(如效率-V7和处理大量文件的能力- 7.3版)?

matlab hdf5 mat-file

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

你如何在Octave中打开.mat文件?

我有一个".mat"文件,我想打开并查看其中的内容.由于我没有MATLAB,我下载了GNU的Octave.由于我正在使用Mac的TERMINAL,我不确定如何打开".mat"文件以便我可以看到内容.谁能帮我这个?谢谢!

terminal matlab octave mat-file

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

从.mat文件中删除变量

有没有人知道如何从matlab文件中删除变量?我知道您可以使用该save -append方法将变量添加到现有的matlab文件中,但是没有关于如何从文件中删除变量的文档.

在有人说"只是保存它"之前,它是因为我将中间处理步骤保存到磁盘以缓解内存问题,最终每个分析例程将有近10 GB的中间数据.谢谢!

matlab mat-file

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

从使用Scipy.io.loadmat加载的.mat文件访问数组内容 - python

更新:这是一个很长的问题归结为,有人可以向我解释numpy数组类吗?我在下面回答了我自己的问题.

我正在开发一个项目,将数据从matlab导入到mysql数据库,其内容将通过django网站提供.我想使用Scipy.io.loadmat将matlab中的信息转换为我可以在python中使用的表单,以便我可以使用django api将数据输入到数据库中.

我的问题是我无法使用scipy.io.loadmat导入的数据.它以几个嵌套数组的形式加载,一些变量名似乎丢失了.

这是我为试验创建的测试结构的matlab代码:

sensors.time = [0:1:10].';
sensors.sensor1 = {};
sensors.sensor1.source_type = 'flight';                          
sensors.sensor1.source_name = 'flight-2';                       
sensors.sensor1.channels = {};
sensors.sensor1.channels.channel1.name = '1';                    
sensors.sensor1.channels.channel1.local_ori = 'lateral';         
sensors.sensor1.channels.channel1.vehicle_ori = 'axial';         
sensors.sensor1.channels.channel1.signals = {};
sensors.sensor1.channels.channel1.signals.signal1.filtered = 'N';
sensors.sensor1.channels.channel1.signals.signal1.filtered_description = 'none'; 
sensors.sensor1.channels.channel1.signals.signal1.data = sin(sensors.time)+0.1*rand(11,1); 

>> sensors
      time: [11x1 double]
      sensor1: [1x1 struct]
>> sensors.sensor1
      source_type: 'flight'
      source_name: 'flight-2'
      channels: [1x1 struct]
>> sensors.sensor1.channels
      channel1: [1x1 struct]
>> sensors.sensor1.channels.channel1
      name: '1'
      local_ori: 'lateral'
      vehicle_ori: 'axial'
      signals: [1x1 struct]
>> sensors.sensor1.channels.channel1.signals
      signal1: [1x1 struct]
>> …
Run Code Online (Sandbox Code Playgroud)

python matlab numpy scipy mat-file

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

找到.mat文件之间的所有差异

我正在寻找一种方法来列出两个.mat文件之间的差异,这对许多人来说都是有用的.

虽然我搜遍了我能想到的任何地方,但我找不到任何符合我要求的东西:

  1. 选择2个垫文件
  2. 找出差异
  3. 妥善保存它们

我最接近的是visdiff.只要我留在matlab中,它就可以让我浏览差异,但是当我保存结果时它只显示我的最高级别.


以下是我的文件通常如下所示的简化示例:

a = 6;
b.c.d = 7;
b.c.e = 'x';
save f1
f = a;
clear a
b.c.e = 'y';
save f2
visdiff('f1.mat','f2.mat')
Run Code Online (Sandbox Code Playgroud)

如果我点击这里b,我可以找到差异.但是如果我运行它并使用'file> save',我无法点击b.因此,我仍然不知道改变了什么.

注意:我没有Simulink


因此我的问题是:

如何在没有Matlab的情况下向2人显示2个mat文件之间的所有差异


以下是我个人认为最适合不同情况的答案:

diff matlab file mat-file

14
推荐指数
3
解决办法
4954
查看次数

Python to MATLAB:使用scipy.io导出字符串列表

我正在尝试使用scipy.io将文本字符串列表从Python导出到MATLAB.我想使用scipy.io,因为我想要的.mat文件应该包括数值矩阵(我在这里学到)和文本单元格数组.

我试过了:

import scipy.io
my_list = ['abc', 'def', 'ghi']
scipy.io.savemat('test.mat', mdict={'my_list': my_list})
Run Code Online (Sandbox Code Playgroud)

在MATLAB中,我加载test.mat并获取一个字符数组:

my_list =

adg
beh
cfi
Run Code Online (Sandbox Code Playgroud)

如何让scipy.io将列表导出到MATLAB单元格数组中?

python string matlab scipy mat-file

13
推荐指数
1
解决办法
7223
查看次数

如何在不加载的情况下在MATLAB中检查MAT文件的内容?

我在MAT文件中有一个大型结构.我想检查结构中是否存在特定字段而不加载MAT文件,因为内容非常大,我想最小化内存使用.

这是可能的,还是我必须先加载它,如下例所示?:

load('test.mat');             %# Load the MAT-file
tf = isfield(s,'fieldname');  %# Check if structure s has field 'fieldname'
Run Code Online (Sandbox Code Playgroud)

matlab struct mat-file

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

将数组从matlab导入R

我确信这是一个简单的问题,但我找不到明显的解决方案.我在matlab中生成了一系列模型输出数组文件(dim 180,360,12),我需要在R中打开它.

我试图使用R.matlab包,只需使用readMat命令,这就产生了一个列表对象.尝试将此列表写入矩阵会导致内存分配错误.

我曾尝试过不公开,但这也没有帮助.

如何打开这些matlab矩阵文件并在R中写为矩阵?有什么想法吗?


到目前为止,matlab读取的代码很简单:

> data<-readMat("filename")
> typeof(data)
[1] "list"
> str(data)
List of 1
 $ pco2: num [1:180, 1:360, 1:12] NaN NaN NaN NaN NaN ...
 - attr(*, "header")=List of 3
 ..$ description: chr "MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Thu Jul 26 10:36:42 2012 "
 ..$ version : chr "5"
 ..$ endian : chr "little
Run Code Online (Sandbox Code Playgroud)

file-io matlab r matrix mat-file

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

标签 统计

mat-file ×10

matlab ×10

python ×4

scipy ×3

file-io ×2

diff ×1

file ×1

hdf5 ×1

io ×1

matrix ×1

numpy ×1

octave ×1

r ×1

string ×1

struct ×1

terminal ×1