xjimm 发表于 2007-11-19 22:49

如何连续读取多个文件

%文件名为规则的数字,239.txt~254.txt
cd目标目录                     %进入工作目录
for iii=239:254;
       fid=fopen('iii.txt','rt');    %想实现循环读入文件
......................                  %对单个文件的相关运算
end
fid返回-1,不知道回事,看了精华的相关文章也不太明白,请指点下

[ 本帖最后由 eight 于 2007-11-20 09:28 编辑 ]

lxq 发表于 2007-11-20 08:56

试试fid=fopen();

xjimm 发表于 2007-11-20 09:19

试了fid=fopen();
fid还是返回-1。。。

eight 发表于 2007-11-20 09:27

原帖由 xjimm 于 2007-11-20 09:19 发表 http://www.chinavib.com/forum/images/common/back.gif
试了fid=fopen();
fid还是返回-1。。。
文件路径问题,建议先看看精华帖中提到 for 新手 的帖子

xjimm 发表于 2007-11-20 10:06

问题已解决,谢谢
fid=fopen(strcat( num2str(iii),'.txt'),'rt');

xjimm 发表于 2007-11-20 11:41

汗,又出现新的问题。。。。用for语句读入n个文件,对单个文件进行计算,然后在每次循环结束时以追加的形式写入一个(.dat)文件,但是整个循环结束后只写入了最后一个循环计算出的数据,原来手动该文件名的时候是追加写入的,不知道用循环为什么不能追加写入?
代码如下
clear all;
clc;
cdD:\          %数据文件目录
for iii=239:240;
   fidin=fopen(strcat( num2str(iii),'.txt'),'rt');
   fid=fopen('D:\P_vtec.dat','a+');                %打开要写入数据的文件
。。。。。。。。。                     %对读入的单个文件(例如:239.txt)的操作
fprintf(fid,'%f %f\n',D_D);          %把计算结果D_D写入文件P_vtec.dat'         
   fclose(fidin);
fclose(fid);
end

可是最后只显示最后一次循环的结果,挠头。。。

xjimm 发表于 2007-11-20 14:39

仔细检查后发现是结构中多了一个end,导致只计算最后一次循环

eight 发表于 2007-11-20 16:02

请安装 2006a 以上的 matlab 版本,以减少出错的几率

40750209 发表于 2012-3-31 17:06

回复 5 # xjimm 的帖子

楼主,我按照你方法做的,不过我的事读dat文件,名字从00到23,按你说的加上strcat后fidin的返回值还是-1,求教~
页: [1]
查看完整版本: 如何连续读取多个文件