1

次のコードがあります。このコードでは、すべての 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 は正常に動作し、目的の結果が得られます。しかし、ループに入ろうとすると、エラーが発生します。textread を間違って使用していますか? ありがとう

4

1 に答える 1

3

はい、使い方textreadが間違っています。

の最初の引数はtextread、ファイル名を含む文字列でなければなりません。と指定した'data_m_files'ため、MATLAB は "data_m_files" という名前のファイルを探しますが、これは明らかに存在しません。

の値を渡す必要があるため、次のようにdata_m_filesから引用符を削除します。'data_m_files'

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

これはうまくいくはずです。

于 2013-01-08T16:03:21.263 に答える