2015-09-28 77 views
0

我想通过将文件名称提供给函数来在多个文件上运行循环。我一直在使用保存这些文件名作为结构:尝试访问MATLAB结构中的字段时出错

files=dir('testdata\*.siz'); 
nrows=size(files,1); 

现在我的循环是:

for i=1:nrows 
filename=files.name{i}; 
Singapore(filename); 
writetable(ans,'file.xls') 
end 

但是,我得到的错误:
“的后跟多个结构元素域参考更多的参考块是一个错误。“

我发现该错误是在

filename=files.name{1}; 

却处处我已经搜查告诉我使用{}访问结构中的字段。我也试过其他类型的括号。

其它信息:
“文件”是该结构的名称
“名称”是“文件”包含在引号中的文件名中的第一列字段。

回答

2

你引用的文件结构错误,你需要:

files(i).name 

的{}是访问单元阵列。

您还应该使用ii(或类似的)代替i作为索引变量,因为i已经是Matlab变量(虚数单元)。

+0

Got it!谢谢!所以对于循环我做了 文件名=文件(我)。名称, 和它的工作 –

+0

我想,不建议使用'我'作为循环变量,但我从来没有任何麻烦。根据Matlabs的建议,虚构单元应该通过'1i'引用。此外,如果功能较短,范围足够小。我会说它和Matlab一样,就像那里的任何语言一样。范围越大,变量的名称就越长。唯一的区别是函数结束时,matlab中循环变量的作用域结束。 – patrik

+0

@JoelWong考虑接受答案,如果它帮助;) –