在循环中使用textread时出错

时间:2013-01-08 16:01:55

标签: matlab

我有以下代码,其中我试图找到所有data.m文件并删除与expr匹配的字符串。

fileData = dir();  
m_file_idx = 1;     
filenames = {fileData.name};  
index = regexp(filenames,'\w*_data.m\w*','match') ;
inFiles = filenames(~cellfun(@isempty,index));    
i=1;
for idx = i : length(inFiles)        
    data_m_files=inFiles{i}; 
    disp(data_m_files)
    C = textread('data_m_files', '%s', 'delimiter', '\n');
    expr ='\.DataType[ =]+''auto''';  
 C = C(cellfun(@isempty, regexp(C, expr)));
    i=i+1;
end

我的输出是:

this_is_data.m

Error using textread (line 167)
File not found.

如果我通过手动输入data_m_file名称使用相同的代码,textread工作正常,我得到了所需的结果。但是当我尝试放入循环时,它给了我error.am我使用textread错误? 感谢

1 个答案:

答案 0 :(得分:3)

是的,您错误地使用了textread

textread的第一个参数必须是包含文件名的字符串。您已将其指定为'data_m_files',因此MATLAB会查找名为“data_m_files”的文件,该文件显然不存在。

您应该传递data_m_files的值,因此请从'data_m_files'中移除引号,如下所示:

C = textread(data_m_files, '%s', 'delimiter', '\n');

这应该有用。