[求助]迴圈中使用fopen、textscan

看板MATLAB作者 ( )時間8年前 (2016/12/21 17:07), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/1
目標為一次讀取多個txt檔,並且對每個txt檔進行一些操作後輸出 當檔案名稱長度相同時,讀取多個檔案會成功; 當檔案名稱長度不一時,讀取多個檔案時textscan會失敗,error如下: Invalid file identifier. Use fopen to generate a valid file identifier. 請問如何解決?謝謝大家 ---------------------------------------------------------------------------- 參考程式碼如下: [filename, pathname] = uigetfile('.txt','Load Filename','MultiSelect','on') ; delimiter = '\t'; formatSpec = '%s%s%[^\n\r]'; for n=1:length(filename); %此時filename為cell之型式 F=strvcat(filename); %轉成char是為了方便後續存檔時製造檔案名稱 file=F(n,:); %令file=第n個檔案名稱 fileID = fopen((file),'r'); dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'EmptyValue' ,NaN, 'ReturnOnError', false); (下略) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.75.176 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1482311242.A.D96.html

12/21 17:16, , 1F
有記得fclose嗎?
12/21 17:16, 1F

12/22 10:06, , 2F
F(n,:) 文字長度不同矩陣會出錯。你應該一律用cell,
12/22 10:06, 2F

12/22 10:13, , 3F
修正,應說不足的strvcat會補空格,你試試double(F(n,:))
12/22 10:13, 3F

12/22 10:14, , 4F
要轉文字用filename{n} 即可
12/22 10:14, 4F

12/26 15:30, , 5F
成功了!!非常感謝!
12/26 15:30, 5F
文章代碼(AID): #1OMaPAsM (MATLAB)
文章代碼(AID): #1OMaPAsM (MATLAB)