Effacer les filtres
Effacer les filtres

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

21 vues (au cours des 30 derniers jours)
Shotaro Suzuki
Shotaro Suzuki le 13 Juin 2017
Commenté : Shotaro Suzuki le 15 Juin 2017
複数ある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 commentaires
michio
michio le 14 Juin 2017
list = dir('*.dat');
で認識される dat ファイルであるにも関わらず
exist(list(2).name)
の戻り値が 0 と出力されてファイルが見つからなかったということですね・・。
参考までですが、、どういった形でファイルを保存されてたのかだけ簡単に教えて頂けますか?
Shotaro Suzuki
Shotaro Suzuki le 15 Juin 2017
デスクトップ上のフォルダ内に.datファイルとして保存
という形で,いわゆる普通の保存の仕方をしていました。
エラーが出ていた時は,プログラムのあるディレクトリと,.datファイルを保存しているディレクトリが場所が異なっていました。(上記のプログラムでは便宜上,'*.dat'としか書いていませんが,実際には,実行時,'c¥ディレクトリ名¥*.dat'と絶対パスで指定していました)
そこで.datファイルを保存しているディレクトリにプログラムファイルを移動させて,実行したところ読み込むことができました。
ディレクトリの指定も間違ってはいなかったので,なぜファイルが見つからなかったのかはわからずじまいです...
.datファイルの出力の都合上,ディレクトリを指定してすべてのファイルを読み込みたいので,もし何かご指摘があればお願いいたします。

Connectez-vous pour commenter.

Réponses (1)

michio
michio le 15 Juin 2017
Modifié(e) : michio le 15 Juin 2017
なるほど、全部では無いですが状況がわかりました。詳細ありがとうございます。
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 commentaire
Shotaro Suzuki
Shotaro Suzuki le 15 Juin 2017
ご丁寧にお応えいただき大変助かりました。
無事,読み込むことができました。 datastore関数についても活用していきたいと思います。

Connectez-vous pour commenter.

Catégories

En savoir plus sur ファイルの操作 dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!