关于Matlab中循环遍历文件中mat文件,操作后依据原始mat文件名生成新的文件名并保存到新路径下

本文介绍如何在Matlab中遍历train文件夹中的.mat文件,根据文件内容打标签,并依据原始文件名生成新文件名保存。通过importdata与load方法读取数据,使用strsplit处理文件名,最终实现按数据数量打标签并存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Matlab中对文件内.mat文件遍历读取并打标签保存

这篇文章是依据我自己的任务所查询学到的一些东西,在此记录下来供以后使用方便。我的任务是在train文件夹中有一组的训练数据,其格式都是mat文件类型,如下图。
 数据样例
现在要给这些mat文件打标签,依据每个mat文件中的数据的数量来打标签,因为mat文件代表不同的个体,所以所打标签的文件名存储也应该和训练数据的文件名相关联,而且还要显示出label加以区分。

数据导入与循化遍历

这一部分内容在上一篇博客中有介绍,这里就不详细介绍了。

功能实现

clc
clear
path = 'E:\第二篇文章工作\train';
a = dir(fullfile(path,'*.mat'));

for ii = 1:3:length
### MATLAB 中将自定义命名的 .mat 文件另存为 .xlsx 格式 为了实现这一目标,可以编写一段脚本用于遍历指定目录下的 `.mat` 文件将其内容逐个导出至相应的 Excel 文件中。考虑到不同版本的 `.mat` 文件可能存储复杂的数据结构(如数组、元胞数组或结构体),因此需要适当地解析这些数据以便于后续操作。 对于简单的数值矩阵或多维数组而言,可以直接利用 `writematrix()` 函数来完成转换过程;而对于更复杂的变量,则建议先通过 `importdata()` 或者更为灵活的 `load()` 命令加载数据后再做进一步处理[^2]。 下面给出了一段适用于大多数情况的通用代码: ```matlab clc; clear; % 获取当前文件夹下所有.mat文件的信息 matFiles = dir('*.mat'); for k = 1:length(matFiles) % 加载.mat文件的内容到临时变量tempData中 tempData = load(matFiles(k).name); % 提取.mat文件的基础名称部分作为新的.xlsx文件的名字 [~, name, ~] = fileparts(matFiles(k).name); excelFileName = sprintf('%s.xlsx', name); % 遍历加载后的结构体字段将它们逐一写入Excel表单内 structFields = fieldnames(tempData); for i = 1:numel(structFields) fieldName = structFields{i}; % 如果该字段对应的是一个普通的二维数组则直接写出, % 否则尝试转化为cell形式再输出 dataToWrite = getfield(tempData, fieldName); if isnumeric(dataToWrite) && ndims(dataToWrite)==2 sheetName = fieldName; %#ok<NASGU> writetable(array2table(dataToWrite), ... 'Filename', excelFileName,... 'Sheet',sheetName); else cellData = num2cell(dataToWrite(:)); sheetName = [fieldName '_converted']; T = array2table(cellData'); writetable(T, ... 'Filename', excelFileName,... 'Sheet',sheetName); end end end ``` 这段程序首先清除了工作空间内的旧变量以防止干扰任务执行。接着获取了当前路径下所有的 `.mat` 文件列表,循环访问其中每一项。针对每一份被选中的 `.mat` 文件,使用 `load()` 方法读取出其内部所含有的全部变量形成一个新的结构体实例 `tempData` 。随后依据文件名创建了一个同名但扩展名为 `.xlsx` 的电子表格文档准备接收即将转化而来的资料。最后一步则是迭代遍历这个刚得到的结构体内各个成员——即原始 `.mat` 文件里的独立对象们——分别调用适当的方式把它们记录下来。 值得注意的是,在实际应用过程中应当根据具体需求调整上述逻辑细节,比如当面对特定类型的非标准输入时就需要额外增加预处理环节确保最终结果的一致性和可用性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢慢编程的猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值