作者xx013652 ( )
看板MATLAB
標題[求助]迴圈中使用fopen、textscan
時間Wed Dec 21 17:07:19 2016
目標為一次讀取多個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://webptt.com/m.aspx?n=bbs/MATLAB/M.1482311242.A.D96.html
1F:推 sunev: 有記得fclose嗎? 12/21 17:16
2F:推 sppmg: F(n,:) 文字長度不同矩陣會出錯。你應該一律用cell, 12/22 10:06
3F:→ sppmg: 修正,應說不足的strvcat會補空格,你試試double(F(n,:)) 12/22 10:13
4F:→ sppmg: 要轉文字用filename{n} 即可 12/22 10:14
5F:→ xx013652: 成功了!!非常感謝! 12/26 15:30