2013-09-25 88 views
0

我有tyhe以下代碼:變量值不被保存MATLAB

myFiles = {fullfile(working, 'file1'),fullfile(working, '*.txt'),... 
      fullfile(folder1, 'controllerX'))}; 

switch (test) 
    case 'test1' 

     myFiles = {fullfile(working, folder1, '*.txt'),... 
       fullfile(working, folder1,folder2,'test.xml')}; 

case 'test2' 
      myFiles = {fullfile(working, folderX, '*.txt'),... 
       fullfile(working, folder1,folder2,'test.xml')} 

end 
for m = 1:numel(myFiles) 
    file = dir(myFiles{m}); 
    verify(numel(file) == 1) 
end 

的問題是,在循環中的檢查專用於情形1執行或2即:numel(MYFILES)=找到的文件的數在案例1或2的情況下使我第一次分配值MYFILES,值不會被保存....我想這MYFILES =在第一時間和數量的文件在情況1或2的情況下

+1

你的測試腳本似乎包含錯誤。特別是在for循環中,你使用'm'作爲計數器,但是在下一行中引用'ii'。如果代碼也包含我們執行它的信息,那麼它確實會有所幫助。 (例如,什麼是「驗證」,「ii」和「測試」) – bdecaf

+0

我更新了代碼,這是一個錯誤...問題不是來自驗證函數,而只是循環中myFile的數目是總是在案例1或案例2中的文件數,而我想要case1或case2中的第一個數字3 +數字 – lola

+0

我不明白。你能澄清你實際得到的輸出和你期望的結果嗎? (「第一個數字3」是什麼意思?) – bdecaf

回答

1

從數您問題和你的評論,我想你想合併不同的文件(case test1,case test2)到你的初始單元格字符串數組中。

由於MYFILES是一排陣,你可以將它們連接起來是這樣的:

switch(test) 
case 'test1' 
    myFiles = [myFiles, {fullfile..., fullfile...}]; 
case 'test2' 
    myFiles = [myFiles, {fullfile..., fullfile...}]; 
end 

如果在以後的某個時候,你不能保證你的電池陣列的尺寸佈局,而使用union,在這種情況下,雙項被過濾掉:

switch(test) 
case 'test1' 
    myFiles = union(myFiles, {fullfile..., fullfile...}); 
case 'test2' 
    myFiles = union(myFiles, {fullfile..., fullfile...}); 
end