guohf 发表于 2013-8-21 11:46

matlab的exist命令在循环语句中的问题

我要对一个文件夹中的全部文件进行处理,用了循环语句,但在用exist判断某文件是否存在(若存在进行其他处理)出错。简单程序如下:

clear; clc;
for i = 1:1000;
       file2=['G:\datapressure\xicy2-0' num2str(i)];   %文件xicy2-01,xicy2-02....含有字符
    if exist('file2','file')==2 % 因个别文件不存在,故用这个语句来判断,但整个循环中exist('file2','file')的值全为0,下面语句不执行
        data_all2=importdata(file2);
          data2=data_all2.data;
          .......  
     end
end

若用exist('G:\datapressure\xicy2-01','file') 当文件存在时值是2,不存在值为0。但有上千文件,不能手动处理。请教高手上面程序要怎样修改啊??或者,不用exist也行,只要能判断某文件是否存在,以便对存在文件进行处理就行。先谢了

gt93 发表于 2013-8-21 11:57

fopen()试试。

guohf 发表于 2013-8-21 15:38

gt93 发表于 2013-8-21 11:57 static/image/common/back.gif
fopen()试试。

能不能具体说明一下,其实我试过用fopen打开文件,但好象不能用。我的文件是fluent导出的ASCII数据(带有标头)。拓展名用'.dat'或'.txt'试过不行。如用下面的程序,也有一些问题(见标红处),上传部分数据,请帮忙看下用什么拓展名?怎样打开?谢谢:


clear; clc;

directory_name = 'G:\datapressure';  %这里直接对目录名赋值了
if isequal(directory_name,0)
    return
end

%files = dir(); %若加拓展名'.dat' 或'.txt',下面的文件数n=0
files = dir();%不加拓展名,可读出
n=size(files,1),%return
A=[];

for i = 1:n;
     % file2= %用这个命令时,结果是“file2=G:\datapressure\.”,不知为什么?
    file2=['G:\datapressure\xicy2-0' num2str(i)];   %文件xicy2-01,xicy2-02....含有字符
      if exist(file2,'file')==2         
          data_all2=importdata(file2);
           data2=data_all2.data;
            .......  
          end
end
页: [1]
查看完整版本: matlab的exist命令在循环语句中的问题