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

19 views (last 30 days)
海
on 13 Oct 2022
Answered: Atsushi Ueno on 15 Oct 2022
複数の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

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 15 Oct 2022
どんなファイルの内容か分からないと明確な回答は出来ませんが:
タイトル行(項目名など)が含まれると読み込みに失敗します。オフセットを指定する必要があります。
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>

More Answers (1)

Atsushi Ueno
Atsushi Ueno on 15 Oct 2022
>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

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!