matlab 批量读取数据文件.mat .dat

本文介绍如何使用Matlab批量读取多个数据文件,并提供了具体的代码示例。首先展示了如何循环读取指定路径下的文件,并绘制图形。接着介绍了如何将读取的数据存储到一个变量中,便于后续处理。

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

1、实现

文件名如 d00.dat, d01.dat, ..., d21.dat

 filepath='G:\traindata\';%文件夹的路径
 for i=1:3  %n是要读入的文件的个数
      load([filepath 'd0' num2str(i) '.dat'])
 end

循环读取和绘制图形

 filepath='G:\traindata\';%文件夹的路径
 for i=0:21  %n是要读入的文件的个数
      dataname=['d0' num2str(i) '.dat']
      chr=[filepath dataname]
      d0=load(chr)
      figure;
      plot(1:length(d0),d0);
      clear(chr)
      clear(dataname)
 end

此外,如果想把循环读取的数据都保存到一个变量的话,可以:
先初始化一个res变量;并使用eval函数赋值。

res = ones(3,480,52)
for i=1:3  %n是要读入的文件的个数
	% 这里每个var的大小为480*52
    var = load([filepath 'd0' num2str(i) '.dat'])
    eval(['res(i,:,:)' '=' 'var']);
end

参考:

  1. matlab批量读入数据文件的方法;
  2. eval 执行文本中的 MATLAB 表达式;
### 批量读取数据并创建MAT文件 为了实现批量读取特定目录下的数据文件(如`.txt`或`.dat`),并将这些数据存储到一个新的`.mat`文件中,在Matlab中有多种方法来完成这一操作。下面提供了一种通用的方法,该方法适用于不同类型的纯文本数据文件。 #### 函数定义:read_and_save_mat ```matlab function read_and_save_mat(inputPath, outputPath) % READ_AND_SAVE_MAT Reads multiple text or dat files from inputPath and saves them into a single .mat file at outputPath. % 获取指定路径下的所有.txt/.dat文件列表 files = dir(fullfile(inputPath, '*.txt')); % 或者使用 *.dat 来匹配.dat 文件 numFiles = length(files); allData = cell(numFiles, 1); for k = 1:numFiles filename = fullfile(inputPath, files(k).name); % 假设每行代表一组观测值,每一列为一个特征 fid = fopen(filename,'r'); C = textscan(fid,'%f%f%f', 'Delimiter','\t'); % 调整格式符以适应实际的数据结构 fclose(fid); % 将读取的内容转换成矩阵形式 dataMatrix = cell2mat(C)'; allData{k} = dataMatrix; end % 创建包含所有已加载数据的结构体数组 structArray = repmat(struct('data', []), [numFiles, 1]); for idx = 1:length(allData) structArray(idx).data = allData{idx}; end % 存储为.mat文件 save(outputPath, '-struct', 'structArray'); end ``` 这段代码首先通过`dir()`函数查找目标文件夹内的所有符合条件的文件[^1]。接着利用循环遍历每一个找到的文件,并调用`textscan()`解析其内容;这里假设输入的是制表符分隔的浮点数值,具体可以根据实际情况调整参数设置。最后,所有的数据被收集在一个单元格数组内,并进一步封装进结构体以便于后续处理和保存[^3]。 当执行上述脚本时,只需传入源文件所在的绝对路径以及希望生成的目标`.mat`文件的位置即可: ```matlab inputDir = 'C:\path\to\txtfiles'; outputFile = 'C:\desired\location\dataCollection.mat'; read_and_save_mat(inputDir, outputFile); ``` 这样就可以一次性把选定目录里的多个文本文件中的数据提取出来,并集中存放到单个`.mat`文件里去了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

rosefunR

你的赞赏是我创作的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值