0

重複の可能性:
matlab のフォルダー内のファイルをループする

それぞれに約50個のcsvファイルを含むいくつかのフォルダーがあり、各ファイルを読み取り、ファイルと同じ名前の変数に配置する必要がありますが、拡張子.csvはありません。ファイルは 2x15000 マトリックスです。誰でも助けることができますか?インターネットを検索しましたが、何もうまくいきません。ありがとう!

4

2 に答える 2

6

別の解決策は次のとおりです。

dd = dir('*.csv');

fileNames = {dd.name}; 

data = cell(numel(fileNames),2);
data(:,1) = regexprep(fileNames, '.csv','');

for ii = 1:numel(fileNames)    
   data{ii,2} = dlmread(fileNames{ii});
end

これは次のようなものを出力します

data = 
    'test1.csv'    [2x15000 double]
    'test2.csv'    [2x15000 double]
    etc.

このアプローチでは、無数の変数名を飛び交う必要はありません。このような状況でセル配列を使用することは、一般的にはより良い方法であると考えられています。無数の変数名のアプローチは「完了していません」。

于 2012-12-06T13:10:34.147 に答える
4

個々のファイルを読み取るには、変数ではなく構造体を使用したいと思います。

files=dir('*.csv');
for file = files
    varname = regexp(file.name, '^.\w+', 'match');
    varname = genvarname(varname{:});
    data.(varname) = csvread(file.name);
end

動的変数が必要な場合evalは、推奨されておらず危険な を使用することになります。

于 2012-12-06T13:12:25.597 に答える