String 如何在matlab中以特定名称列出文件夹中的所有文件?
我一直在做一个循环,为文件夹中的121个不同文件分配Mx名称String 如何在matlab中以特定名称列出文件夹中的所有文件?,string,matlab,loops,dir,xlsread,String,Matlab,Loops,Dir,Xlsread,我一直在做一个循环,为文件夹中的121个不同文件分配Mx名称 allFiles = dir( '*.xls''String' ); allNames = { allFiles.name }; for ii = 1:length(allNames) M(ii) = xlsread(allFiles(1i)); end 问题是没有errormessage,但它没有为我想要的值/文件分配任何名称 listing = dir('*.xls'); disp(listing); 当我做一个
allFiles = dir( '*.xls''String' );
allNames = { allFiles.name };
for ii = 1:length(allNames) M(ii) = xlsread(allFiles(1i));
end
问题是没有errormessage,但它没有为我想要的值/文件分配任何名称
listing = dir('*.xls');
disp(listing);
当我做一个简单的dir时,它告诉我
121x1 struct array with fields:
name
date
bytes
isdir
datenum
但我必须使它成为一个字符串,以便xlsread工作
我想要的是为每个文件命名,这样我就可以在matlab中处理它们,即两个矩阵的加法
什么是错误的?这个问题基本上只是输入错误和变量混乱:
allFiles = dir('*.xls'); % correct file extension
for ii = 1:size(allFiles, 1) % allFiles has one row per file, so loop over those
M{ii} = xlsread(allFiles(ii).name); % store matrix in cell array
end
请注意,M现在是一个单元格数组,因为不能在一个矩阵或向量中存储多个矩阵。错误消息是什么?有多少文件的扩展名为.xls的字符串?无论如何,括号vs.括号:allfilesii以1x1单元格数组的形式返回该单元格-allfiles{ii}返回该单元格的内容。我从1-24的那些对象来自编辑器中的另一个脚本。工作区不获取任何Mx对象。执行{}而不是没有任何区别。您的实际代码中是否有这样的输入错误:allFiles1i而不是allfilesii?最初它只有一个i,但matlab建议将其设置为{1i}以优化速度,这是一个论点。使它成为{ii}也没有任何区别。那么我如何才能将allFiles转换为字符串呢?您可以使用{}花括号代替括号,如@Notlikethat所述。例如,从dir命令中取出“String”,然后尝试xlsreadallNames{ii};-看看你得到了什么。如果只想尝试一个文件进行测试,可以在命令行xlsreadallNames{0}或xlsreadallFiles0.name上键入。如果您得到一些关于字符串的错误,请切换是否使用{}或.confirm。M1-M121现在给了我一个预期的矩阵。