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
相关产品推荐
相关产品推荐

