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

조회 수: 34(최근 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!