load .mat data with python

import scipy.io as sio

import numpy as np

import h5py

import os


IMG_PATH= '../../data/my_bus/images/'

SAVE_PATH = '../../data/my_bus/'

ANNOT_PATH = '../../data/my_bus/Annotations'


if not os.path.exists(SAVE_PATH):

        os.mkdir(SAVE_PATH)


annot_list = os.listdir(ANNOT_PATH)

img_list = os.listdir(IMG_PATH)


for i in range(0, len(annot_list)):

    path = os.path.join(ANNOT_PATH, annot_list[i])

    print path

for filename in annot_list:

    portion = os.path.splitext(filename)

#  print portion[0]

#  print portion[1]

    annot_file = ANNOT_PATH + '/' + filename

    try:

        data = sio.loadmat(annot_file)

    except:

        print 'pass', filename

        continue

    record = data['record']

    size = record['size']

    objects = record['objects']

### 如何在MATLAB中正确加载 `data.mat` 文件 在 MATLAB 中,`.mat` 文件是一种用于存储变量的标准二进制文件格式。要加载 `.mat` 文件中的数据,可以使用内置函数 `load()` 来完成此操作[^1]。 以下是具体实现方式: #### 使用 `load()` 函数加载 `.mat` 文件 假设有一个名为 `data.mat` 的文件,可以通过以下命令将其加载到工作区: ```matlab loadedData = load('data.mat'); ``` 执行上述代码后,`data.mat` 文件中的所有变量都将被加载到结构体 `loadedData` 中。如果该 `.mat` 文件仅包含单个变量,则可以直接访问它;如果有多个变量,则需要通过字段名逐一提取这些变量[^3]。 #### 处理复杂情况下的 `.mat` 文件 有时 `.mat` 文件可能包含复杂的嵌套结构或元胞数组(cell array)。在这种情况下,需进一步解析其内部结构。例如,若 `data.mat` 包含一个名为 `myVariable` 的矩阵,可按如下方式进行访问: ```matlab myMatrix = loadedData.myVariable; ``` 需要注意的是,部分 `.mat` 文件可能会因为版本差异或其他原因而难以直接读取。此时应确认所使用的 `.mat` 文件版本是否兼容当前 MATLAB 版本。对于较新的 `-v7.3` 格式的 `.mat` 文件,推荐使用 `h5info()` 或其他 HDF5 工具来处理[^4]。 --- ### Python 加载 `.mat` 文件的相关说明 虽然问题是针对 MATLAB 提出的,但考虑到跨平台需求,这里也简单提及 Python 对 `.mat` 文件的支持。Python 可借助 `scipy.io.loadmat()` 方法加载大多数标准 `.mat` 文件。然而,当遇到特殊格式(如包含对象或元胞数组的情况),可能需要额外调整代码逻辑[^2]。 示例代码如下所示: ```python from scipy.io import loadmat # 加载 .mat 文件 data = loadmat('data.mat') # 访问特定变量 if 'myVariable' in data: my_matrix = data['myVariable'] else: raise KeyError("指定的变量不存在于 MAT 文件中") ``` --- #### 常见问题排查 1. **KeyError 错误** 如果尝试访问某个键却引发异常,则可能是目标变量名称不匹配或者未正确识别。建议打印整个加载后的字典内容以便验证实际可用的关键字。 2. **版本冲突** 不同版本间的 `.mat` 文件可能存在格式上的区别。确保生成和读取消息均采用一致的方式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值