重複の可能性:
matlab のフォルダー内のファイルをループする
それぞれに約50個のcsvファイルを含むいくつかのフォルダーがあり、各ファイルを読み取り、ファイルと同じ名前の変数に配置する必要がありますが、拡張子.csvはありません。ファイルは 2x15000 マトリックスです。誰でも助けることができますか?インターネットを検索しましたが、何もうまくいきません。ありがとう!
重複の可能性:
matlab のフォルダー内のファイルをループする
それぞれに約50個のcsvファイルを含むいくつかのフォルダーがあり、各ファイルを読み取り、ファイルと同じ名前の変数に配置する必要がありますが、拡張子.csvはありません。ファイルは 2x15000 マトリックスです。誰でも助けることができますか?インターネットを検索しましたが、何もうまくいきません。ありがとう!
別の解決策は次のとおりです。
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.
このアプローチでは、無数の変数名を飛び交う必要はありません。このような状況でセル配列を使用することは、一般的にはより良い方法であると考えられています。無数の変数名のアプローチは「完了していません」。
個々のファイルを読み取るには、変数ではなく構造体を使用したいと思います。
files=dir('*.csv');
for file = files
varname = regexp(file.name, '^.\w+', 'match');
varname = genvarname(varname{:});
data.(varname) = csvread(file.name);
end
動的変数が必要な場合eval
は、推奨されておらず危険な を使用することになります。