csv fileを読み込めない

7 次查看(过去 30 天)
satosi mukaida
satosi mukaida 2018-9-4
%フォルダ内のCSVファイルを読み込み
files = dir('*.csv');
%出力用フォルダがなければ作成
if
exist('output') == 0
mkdir 'output';
end
for n=1:length(files);
%ファイルの情報の取得
[path, name, ext] = fileparts(files(n).name);
%データの読み込みと分割
time=csvread(files(n).name, 5, 0, [5 0 2052 0]);
ax=csvread(files(n).name, 5, 1, [5 1 2052 1]);
ay=csvread(files(n).name, 5, 2, [5 2 2052 2]);
az=csvread(files(n).name, 5, 3, [5 3 2052 3]);
%ワークスペースの変数にデータをコピー
eval(['Time', int2str(n), ' = time;']);
eval(['Ax', int2str(n), ' = ax;']);
eval(['Ay', int2str(n), ' = ay;']);
eval(['Az', int2str(n), ' = az;']);
%outputフォルダに書き出し
csvwrite(strcat('output\', name, 'time.csv'), time);
csvwrite(strcat('output\', name, 'Ax.csv'), ax);
csvwrite(strcat('output\', name, 'Ay.csv'), ay);
csvwrite(strcat('output\', name, 'Az.csv'), az);
end
実行すると
エラーメッセージ
エラー: dlmread (line 165)
内部サイズの不一致
エラー: csvread (line 50)
m=dlmread(filename, ',', r, c, rng);
エラー: csv_read_ind (line 14)
time=csvread(files(n).name, 5, 0, [5 0 2052 0]);
が返ってきます 以前使用していた
%データの読み込みと分割
time=csvread(files(n).name, 4, 0, [4 0 515 0]);
ax=csvread(files(n).name, 4, 1, [4 1 515 1]);
ay=csvread(files(n).name, 4, 2, [4 2 515 2]);
az=csvread(files(n).name, 4, 3, [4 3 515 3])
では作動していましたどう変更すれば作動するでしょうか
  1 个评论
michio
michio 2018-9-7
読みやすくなるようコード表示を編集いたしました。

请先登录,再进行评论。

采纳的回答

Etsuo Maeda
Etsuo Maeda 2018-9-7
コードとエラーメッセージだけでなく、読み込み対象のデータもつけておけば回答を得やすくなるかもしれませんね。
少し頭を使って考えると、簡単に答えにたどり着くことができます。
時間 = csvread (ファイル (n). 名前, 4, 0, [4 0 515 0]);
では正しくデータが読み込めていたが、
時間 = csvread (ファイル (n). 名前, 5, 0, [5 0 2052 0]);
ではエラーとなったわけですから、変更した箇所であるcsvreadの2番目の引数か4番目の引数、もしくは両方に問題があります。
doc csvread
M = csvread(filename, R1, C1, [R1 C1 R2 C2])
で引数を確認すると、変更した箇所はR1“行の開始オフセット”、R2“行の終了オフセット”ということが分かります。
手元で適当なcsvファイルを生成して動作させてみると、R2が実際に格納されている行数よりも多いと同じエラーが発生します。
エラー: dlmread (line 165)
内部サイズの不一致
エラー: csvread (line 50)
m=dlmread(filename, ',', r, c, rng);
エラー: untitled (line 13)
time=csvread(files(n).name, 5, 0, [5 0 2052 0]);
R2とC2を指定するということは、予めデータ数が分かっているはずですから、2052が正しい数値なのかどうかを確認してみてください。
エラーが出た場合は、まずはドキュメンテーションで関数の仕様を確認してみましょう。
(というよりは、引数を変える前にドキュメンテーションを確認しましょう・・・)
エラー再現用csvデータ例
Skip, Skip, Skip, Skip
0,34,23,52
1,52,65,60
エラー再現用コード例
files = dir('*.csv');
[path, name, ext] = fileparts(files.name);
R1 = 1;
R2 = 2; % 3以上で内部サイズ不一致のエラー
time=csvread(files.name, R1, 0, [R1 0 R2 0]);
HTH
  2 个评论
satosi mukaida
satosi mukaida 2018-9-7
回答ありがとうございます 使用しているデータを添付しました ドキュメンテーションをよむかぎり 問題がないと思うのですが依然として読み込めません
satosi mukaida
satosi mukaida 2018-9-7
解決しました引数の範囲が間違っていました

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Environment and Settings 的更多信息

标签

产品


版本

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by