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

21 次查看(过去 30 天)
Shotaro Suzuki
Shotaro Suzuki 2017-6-13
複数ある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 个评论
michio
michio 2017-6-14
list = dir('*.dat');
で認識される dat ファイルであるにも関わらず
exist(list(2).name)
の戻り値が 0 と出力されてファイルが見つからなかったということですね・・。
参考までですが、、どういった形でファイルを保存されてたのかだけ簡単に教えて頂けますか?
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関数についても活用していきたいと思います。

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 ファイルの操作 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!