複数あるdatファイルの読み込みエラーについて

22 ビュー (過去 30 日間)
Shotaro Suzuki
Shotaro Suzuki 2017 年 6 月 13 日
コメント済み: Shotaro Suzuki 2017 年 6 月 15 日
複数ある7行4列のdatファイルを読み込みたいと思っています。 下記のようなコードを実行すると,「ファイルが見つかりません。」とエラーが出ます。 listで確認してもdatファイルはすべてリストアップされています。 どのように書き換えれば正常に読み込みができるでしょうか?
list= dir ('*.dat');
data = cell(1,length(list));
for k = 1:length(list)
data{k} = csvread(list(k).name);
end
  6 件のコメント
Shotaro Suzuki
Shotaro Suzuki 2017 年 6 月 15 日
デスクトップ上のフォルダ内に.datファイルとして保存
という形で,いわゆる普通の保存の仕方をしていました。
エラーが出ていた時は,プログラムのあるディレクトリと,.datファイルを保存しているディレクトリが場所が異なっていました。(上記のプログラムでは便宜上,'*.dat'としか書いていませんが,実際には,実行時,'c¥ディレクトリ名¥*.dat'と絶対パスで指定していました)
そこで.datファイルを保存しているディレクトリにプログラムファイルを移動させて,実行したところ読み込むことができました。
ディレクトリの指定も間違ってはいなかったので,なぜファイルが見つからなかったのかはわからずじまいです...
.datファイルの出力の都合上,ディレクトリを指定してすべてのファイルを読み込みたいので,もし何かご指摘があればお願いいたします。

サインインしてコメントする。

回答 (1 件)

michio
michio 2017 年 6 月 15 日
編集済み: michio 2017 年 6 月 15 日
なるほど、全部では無いですが状況がわかりました。詳細ありがとうございます。
dir の結果 list(k).name にどんな情報が入っているかを確認すると、ファイルの名前しか含まれていないことがわかるかと思います。
スクリプトが保存されているディレクトリとは別の場所にあるファイルを読み込む場合に、csvread 関数にファイル名を与えるだけでは不十分です。関数はファイルがどこにあるかわからないので。
例えば for ループ内で fullfile https://jp.mathworks.com/help/matlab/ref/fullfile.html 関数を使ってファイル名とディレクトリパス名を結合した上で、csvread 関数に入力すれば読み込めるはずですよ。 トライしてみてください。
もし余裕があれば、、下記で紹介している datastore 関数も便利ですよ。 https://jp.mathworks.com/matlabcentral/answers/309715-datastore
  1 件のコメント
Shotaro Suzuki
Shotaro Suzuki 2017 年 6 月 15 日
ご丁寧にお応えいただき大変助かりました。
無事,読み込むことができました。 datastore関数についても活用していきたいと思います。

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!