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

Matlab中循环遍历文件名导入数据并命名矩阵的实现方法

哈哈,这个需求我太懂了!在MATLAB里实现类似Bash的批量文件导入+命名存储完全没问题,给你两种实用方案,按需选就行:

方法一:用结构体存储(非常推荐)

这种方式比零散的变量更整洁,后续管理批量生成的矩阵也方便得多,不会把工作区搞得乱七八糟。

操作步骤和代码示例:

  • 先准备好要处理的文件名列表,不管是手动指定还是自动读取文件夹里的txt文件都可以
  • 循环遍历每个文件,导入数据后存在结构体的对应字段里
% 手动指定文件名列表(比如你提到的这些)
fileNames = {'apple', 'orange', 'guava', 'jackfruit'};

% 要是文件夹里有一堆txt文件,也可以自动获取:
% fileList = dir('*.txt'); % 获取当前目录下所有txt文件
% fileNames = {fileList.name}; % 提取文件名
% fileNames = strrep(fileNames, '.txt', ''); % 去掉后缀名,只保留核心名称

% 创建空结构体用来存所有矩阵
dataStruct = struct();

for i = 1:length(fileNames)
    currentName = fileNames{i};
    % 导入txt文件,旧版本用dlmread,新版本推荐readmatrix(兼容性更好)
    currentMatrix = dlmread([currentName '.txt']);
    % 将矩阵存入结构体,字段名就是原文件名
    dataStruct.(currentName) = currentMatrix;
end

之后要调用某个矩阵直接用dataStruct.apple、dataStruct.orange就行,非常直观!

方法二:动态创建独立变量(类似Bash的写法)

如果你一定要像Bash那样每个文件名对应一个独立的xxx_matrix变量,MATLAB也能实现,不过不太推荐这种方式——容易导致变量名混乱,后续调试和维护都麻烦。但还是给你写个示例:

fileNames = {'apple', 'orange', 'guava', 'jackfruit'};

for i = 1:length(fileNames)
    currentName = fileNames{i};
    currentMatrix = dlmread([currentName '.txt']);
    % 动态创建以原文件名+_matrix命名的变量,比如apple_matrix
    assignin('base', [currentName '_matrix'], currentMatrix);
end

运行后你的工作区就会出现apple_matrix、orange_matrix这些独立变量,和你Bash里的写法效果完全一致。

小提示:如果你的文件不在当前工作目录,记得把完整路径加上,比如用fullfile('你的文件夹路径', [currentName '.txt'])来拼接路径,避免找不到文件的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:57:19