作者xj04a83 (shin)
看板MATLAB
标题[问题] 使用textread+dir连续读档
时间Thu Jul 19 15:20:21 2012
如题
在资料夹里面的档案名称不连续
ex. 21.txt 23.txt 31.txt
现在想用textread将所有档案读进来并做处理
初步程式码
path = 'C:\';
file = dir(path);
filename = {file(~[file.isdir]).name};
for i = 1:3
name = filename(i);
fullname = strcat(path,name);
[name number] = textread(fullname,'%f &f',-1,'headerlines',1);
end
但却跑出
??? Undefined function or method 'exist' for input arguments of type 'cell'.
Error in ==> textread>noargname at 192
arg = f(arg);
Error in ==> textread at 159
if (noargname(@exist,varargin{1}) ~= 2 ||
noargname(@exist,fullfile(cd,varargin{1})) ~= 2) ...
如果textread是输入'C:\21.txt'就没有这问题
但fullname不是也是这样吗...??
请问我该如何修正呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.99.210
1F:→ jeffppp:直接cd(path) filename=dir('*.txt') 这样就行了吧 07/19 17:40
抱歉,可能是我新手的关系
这样要怎麽连续读档案呢??
※ 编辑: xj04a83 来自: 118.169.34.190 (07/22 16:18)
自行解决了 :)
因为用原文中的方法得到的档案名称会有单引号 (cell数据类型)
而textread是读字串,因此先将名称转为字元
path = 'C:\';
allfile = dir(path);
filename = char({allfile(~[allfile.isdir]).name}); %转成字元+忽略读进的folder
[m,n] = size(filename);
for i = 1:n
file = strcat(path,filename(i,:));
[name number] = textread(file,'%f %f',-1,'headerlines',1);
end
※ 编辑: xj04a83 来自: 118.169.34.190 (07/22 18:10)