作者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/cn.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