在不使用字典的情况下从 Python 创建 *.mat 文件

Creating *.mat file from Python without using dictionary

我想将其保存到 *.mat file 中的列表很少。但是根据 scipy.io.savemat 命令文档,我需要用列表创建字典,然后使用命令将其保存到 *.mat file

如果我按照文档中提到的方式保存它,mat 文件将具有包含变量的结构,就像我在字典中使用的数组一样。现在我在这里遇到问题,我有另一个程序(不可编辑)将使用 mat 文件 并加载它们以根据数据绘制一些图形。该程序无法处理该结构,因为它的编写方式是加载一个 mat 文件,然后它会直接处理其中的数组。

那么有没有不用dictionaries就可以保存mat file的方法呢?请看图片了解更多

谢谢

这是我用来保存 *.mat file

的示例算法
import os
os.getcwd()
os.chdir(os.getcwd())
import scipy.io as sio

x=[1,2,3,4,5]
y=[234,5445,778] #can be 1000 lists

data={}

data['x']=x
data['y']=y
sio.savemat('test.mat',{'interpolated_data':data})

怎么样

scipy.io.savemat('interpolated_data_max_compare.mat', 
                 {'NA1_X_order10_ACCE_ms2': np.zeros((3000,1)),
                  'NA1_X_order10_DISP_mm': np.ones((3000,1))})

应该可以正常工作...

根据您在问题中添加的代码,而不是sio.savemat('...', {'interpolated_data':data}),只需保存

sio.savemat('...', data)

你应该没问题:data 已经是一本字典,你不需要在保存时使用 {'interpolated_data': data} 添加额外的级别。

您可以直接使用 Writing 原语

import scipy.io.matlab as ml

f=open("something.mat","wb")
mw=ml.mio5.MatFile5Writer(f)
mw.put_variables({"testVar":22})