2014-10-02 54 views
-2

當我想要讀取它在兩個步驟中生成的文件時遇到問題。讀取在MATLAB中有兩個索引的文件名

假設我們有兩個for循環。該代碼會寫外環內的文件名作爲

file_name_N1 

,它會重複,直至i=10。日內環將再增加名字最終文件

file_name_N1_S1 

,它會重複,直至i=5。總共,將有50個文件作爲

file_name_N1_S1 
.... 
file_name_N1_S5 
file_name_N2_S1 
... 
file_name_N2_S5 
... 
file_name_N10_S1 
... 
file_name_N10_S5 

現在我必須寫在另一個函數中調用它們。 例如,我需要在文件中按順序使用一些信息,for循環將是一個不錯的選擇(我認爲!)。

我的問題是有沒有什麼辦法可以編寫兩個循環來調用這些文件?或者,如何在另一個與生產的功能不同的功能中調用它們。

+0

'「用於調用這些文件」'或創建文件名? – Divakar 2014-10-02 13:16:03

+2

投票結束,因爲它很不清楚你問什麼,這也反映在你的意見。對於你以後的帖子,請從帖子本身開始以更好的方式解釋你自己,這樣人們就不必瘋狂猜測了。 – Divakar 2014-10-02 13:33:11

+1

不要採取這種錯誤的方式,但閱讀[如何問](http://stackoverflow.com/help/how-to-ask)可能對你有用。 – kkuilla 2014-10-02 14:41:12

回答

1
content(50).time = []; % allocation 
idx = 0; 
for n=1:10 
    for s=1:5 
     % generate the file name 
     file = sprintf('file_name_N%d_S%d',n,s); 
     idx = idx + 1; 
     % store the content of the file 
     [content(idx).skeleton content(idx).time] = loadbvh(file); 
    end 
end 

現在,您的結構數組content長度爲50包含文件的信息。但我想你需要先下載函數loadbvh,然後才能工作。

+0

這個循環是否讀取文件?我認爲這是寫文件而不是讀這個循環的輸出。 – Royeh 2014-10-02 13:22:11

+0

不,它會生成50個文件名。讀取文件可以通過多種方式來完成,具體取決於文件中的內容以及您想要使用的文件。你可以使用例如'content {idx} = dlmread(file);'如果你引入一個計數器'idx'。 – MeMyselfAndI 2014-10-02 13:23:01

+0

但我的問題是如何讀取這50個文件作爲輸出?我能做到這一點,因爲有'S'和'N'的計數器。對我來說,用'N'來計數是問題所在。這些文件是'* .bvh'文件,代碼會從這些文件中讀取一些信息。然後閱讀確切的文件是非常重要的。 – Royeh 2014-10-02 13:25:53