英文:
Load matlab .mat export of signal logs in python
问题
我正在使用Matlab R2023a导出信号,如下所示:
save logs.mat logsout -v7
v7是推荐的版本,用于在Python中读取文件(在不同的讨论中看到)。
然而,Python读取的文件与我在Matlab中拥有的不同。在Matlab中,我有一个很好的数据集:
但在Python中使用以下代码读取后:
from scipy.io import loadmat # 这是加载mat文件的SciPy模块
mat = loadmat('logs.mat')
我看到的是这样的:
与结构不同,我有一个形状为(1, 277355408)的数组。我错过了什么?我需要在生成后在Python中处理这些信号。
英文:
I am exporting signals in matlab R2023a like this:
save logs.mat logsout -v7
v7 is recomended version for reading the file in python (seen in different threads).
However, the file read by python is different from what I have in matlab. In matlab I have a nice dataset:
but after reading it in python with following code:
from scipy.io import loadmat # this is the SciPy module that loads mat-files
mat = loadmat('logs.mat')
this is what I see:
Instead of structure, I have a array of shape (1, 277355408)
. What do I miss? I need to process the signals in python after generating.
答案1
得分: 0
看起来,正如@hpaulj所建议的,loadmat可以处理Matlab的矩阵、单元和结构体。似乎不能处理数据集。我通过像这样单独导出变量来解决了这个问题:
logsout{1}.Values.Data
save(logsout{1}.Name, 'ans', '-v7')
这只是第一个信号的示例。
现在我可以使用scipy来读取它。然而,还有一种将其保存为hdf5文件并按以下方式读取和处理的方法:
import nexusformat.nexus as nx
f = nx.nxload('logs.h5')
prem = f.tree # 这可以用来打印树
# 或者像这样
import h5py
f = h5py.File('logs.h5', 'r')
英文:
It seems, as suggested by @hpaulj - loadmat can handle matlab matrix, cell, and struct. Looks like it can't handle a dataset. I solved it by exporting variables alone like this:
logsout{1}.Values.Data
save(logsout{1}.Name, 'ans', '-v7')
Just an example for first signal.
Now I can read it with scipy. However, there is also way to save it as hdf5 file and read and work with it as follows:
import nexusformat.nexus as nx
f = nx.nxload('logs.h5')
prem = f.tree # this can be used to print the tree
#or like this
import h5py
f = h5py.File('logs.h5', 'r')
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论