You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matlab批量处理子文件夹中table.txt并在同目录保存结果

批量处理子文件夹中同名文件的解决方案

你可以通过遍历指定目录下的所有子文件夹,对每个子文件夹内的table.txt执行相同处理逻辑,核心是用MATLAB的文件夹遍历函数实现批量操作。修改后的代码如下:

% 替换为你的主目录路径,比如 'D:\your_main_folder'
main_dir = '你的主目录路径';

% 获取主目录下的所有子文件夹
sub_folders = dir(main_dir);
sub_folders = sub_folders([sub_folders.isdir]); % 筛选出文件夹
% 排除当前目录(.)和上级目录(..)
sub_folders = sub_folders(~ismember({sub_folders.name}, {'.', '..'}));

% 循环遍历每个子文件夹
for i = 1:length(sub_folders)
    % 拼接子文件夹的完整路径
    folder_path = fullfile(main_dir, sub_folders(i).name);
    
    % 检查当前子文件夹中是否存在table.txt
    table_path = fullfile(folder_path, 'table.txt');
    if ~exist(table_path, 'file')
        fprintf('警告:%s 中未找到table.txt,跳过该文件夹\n', folder_path);
        continue;
    end
    
    % 读取文件并执行数据处理(和原代码逻辑一致,改用绝对路径)
    a = readmatrix(table_path);
    a4 = a(:,4);
    a4 = a4 - mean(a4);
    N = 2^(nextpow2(length(a4)));
    freq = abs(fftshift(fft(a4,N))); 

    t = [0:1e-12:20e-9].';
    ts = t(2)-t(1);
    F = ((-N/2:N/2-1)/N)*(1/ts);

    fmr = [(F(N/2+1:end)/1e9)' freq(N/2+1:end)];
    
    % 将结果保存到对应子文件夹下的fmr.csv
    output_path = fullfile(folder_path, 'fmr.csv');
    writematrix(fmr, output_path);
    
    fprintf('已处理完成:%s\n', folder_path);
end

关键说明

  • 避免目录切换错误:用fullfile拼接绝对路径,代替cd操作,防止因目录切换混乱导致的报错
  • 有效筛选子文件夹:通过dir获取目录列表后,排除系统默认的.和..目录,只处理目标子文件夹
  • 增加容错机制:加入exist判断,当某个子文件夹没有table.txt时自动跳过,不中断整个批量处理流程
  • 实时跟踪进度:用fprintf输出处理状态,方便你掌握每个文件夹的处理情况

内容的提问来源于stack exchange,提问作者Sateesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:40:27