複数のCSVファイルのインポート

19 次查看(过去 30 天)
海
2022-10-13
回答: Atsushi Ueno 2022-10-15
複数のCSVファイルのインポートを行いたいのですが、以下のプログラミングを行っても上手くいきません、改善点を教えていただきたいです。ちなみにファイル名はd_1.csv ,d_2.csv ,d_3.csv.........となっています。
P = 'relative/absolute path to the folder where the files are saved';
S = dir(fullfile(P,'*.csv'));
for k = 1:numel(S)
F = fullfile(P,S(k).name);
S(k).data = csvread(F);
end

采纳的回答

Atsushi Ueno
Atsushi Ueno 2022-10-15
どんなファイルの内容か分からないと明確な回答は出来ませんが:
タイトル行(項目名など)が含まれると読み込みに失敗します。オフセットを指定する必要があります。
M = csvread(filename,R1,C1) は、
行のオフセット R1 および列のオフセット C1 からファイルのデータの読み取りを開始します。
たとえば、オフセット R1=0 および C1=0 はファイルの最初の値を示します。
P = pwd; % ここではカレントフォルダで作業します
S = dir(fullfile(P,'*.csv'));
for k = 1:numel(S)
F = fullfile(P,S(k).name)
S(k).data = csvread(F,1,0); % 行のオフセット=1、列のオフセット0 からファイルのデータの読み取りを開始
end
F = '/users/mss.system.ynUYNY/d_1.csv'
F = '/users/mss.system.ynUYNY/d_2.csv'
F = '/users/mss.system.ynUYNY/d_3.csv'
S(3).data' % 上手く読み込めた
ans = 2×11
0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
S(3).data = csvread(F); % オフセット指定が無いと読み取りに失敗する
Error using dlmread
Unable to parse a "Numeric" field when reading row 1, field 1.
Actual Text: "d_3_1,d_3_2"
Expected: A number or literal "NaN", "Inf". (possibly signed, case insensitive)

Error in csvread (line 53)
m=dlmread(filename, ',', r, c); %#ok<*DLMRD>

更多回答(1 个)

Atsushi Ueno
Atsushi Ueno 2022-10-15
>csvread は推奨されません。代わりに readmatrix を使用してください。
P = pwd; % ここではカレントフォルダで作業します
S = dir(fullfile(P,'*.csv'));
for k = 1:numel(S)
F = fullfile(P,S(k).name);
S(k).data = readmatrix(F); % 項目欄を判別してくれるのでオフセットの指定は不要
end
S(3).data' % 上手く読み込めた
ans = 2×11
0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000

产品


版本

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!