2015-09-28 50 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考慮接受答案,如果它幫助;) –

相關問題