我什么时候运行此代码;我在matlab上收到错误。
A = dir('D:\Folder_One\Folder_Two\');
len = length(A);
disp(len)
P = [];
Q = [];
R = [];
for n = 1: len
filename = [' D:\Folder_One\Folder_Two\’, A(n, :)];
mydata = dlmread(filename);
Pfeatures = features(mydata(:5));
Qfeatures = features(mydata(:7));
P = [P;Pfeatures];
Q = [Q;Qfeatures];
end
???使用==>时出错horzcat 从char转换为struct时发生以下错误: 使用==>时出错结构 无法从char转换为struct。
答案 0 :(得分:0)
变量A
是一个结构,它包含目录中文件或文件夹的名称,日期和其他参数,位于不同的字段中。如果你想循环遍历所有文件,你应该只使用字段" name"来自结构,像这样:
filename = [' D:\Folder_One\Folder_Two\’, A(n).name];
你不能将char与struct A(n)
结合使用,但A(n).name
是char,所以你可以把它组合起来。
另一个建议是从3循环而不是从1循环,因为如果你查看变量A
,你会看到地点1和2有"。"和" ..",用于当前目录及其父目录。我想你不需要它。如果你的文件的名字以一些奇怪的字符开头(!,@,#等),那么点可以在其他地方,你应该用if
语句跳过它。无论如何,它比从3开始干净整洁,但两者都应该有效。
@DVarga的另一个建议是跳过所有可能的目录,如果你有一些,可以通过检查A(n).isdir
轻松确定。
答案 1 :(得分:0)
Adiel的投票是对的。 A是结构,名称是A的一部分。您应该从A中获取它。 第一行和第二行的dir信息是'。'和' ..'。 你也可以用
if ~strcmpi( A(n).name,'.') and ~strcmpi( A(n).name,'..')
转义前两个struct