【发布时间】:2014-01-26 18:45:22
【问题描述】:
我一直在制作一个循环,为文件夹中的 121 个不同文件分配 Mx 名称。
allFiles = dir( '*.xls''String' );
allNames = { allFiles.name };
for ii = 1:length(allNames) M(ii) = xlsread(allFiles(1i));
end
问题是没有错误消息,但它没有为我想要的值/文件分配任何名称。
listing = dir('*.xls');
disp(listing);
当我制作一个简单的 dir() 时,它会告诉我
121x1 struct array with fields:
name
date
bytes
isdir
datenum
但我必须将其设为字符串才能使 xlsread() 工作。
我想要的是为每个文件命名,以便我可以在 matlab 中处理它们(即添加两个矩阵)。
可能有什么问题?
【问题讨论】:
-
错误信息是什么?有多少文件真正具有扩展名
.xls'String?无论如何,括号与方括号:allfiles(ii)返回该单元格(作为 1x1 单元格数组) -allfiles{ii}返回该单元格的 contents。 -
没什么,没有错误信息。我在 1-24 中拥有的那些对象来自编辑器中的另一个脚本。工作区没有得到任何 Mx 对象。用 {} 代替 () 没有任何区别。
-
您的实际代码中是否有这个错字:
allFiles(1i)而不是allfiles(ii)? -
最初它只有一个 (i),但 matlab 建议将其设为 {1i} 以优化速度是参数。让它 {ii} 也没有任何区别。
-
"我怎样才能将 allFiles 转换为字符串?"正如@Notlikethat 所指出的,您可以使用
{}大括号代替()括号。例如,从dir命令中取出'String',然后尝试xlsread(allNames{ii});- 看看你会得到什么。如果您只想尝试一个文件进行测试,您可以在命令行输入xlsread(allNames{0})或xlsread(allFiles(0).name)。如果遇到关于字符串的错误,请切换使用{}或()。
标签: string matlab loops dir xlsread