ファイル読み込み/書き込み完了検出について
22 次查看(过去 30 天)
显示 更早的评论
MATLAB2017bを2019bにバージョンアップしたのを機に、dlmreadやdlmwriteをreadmatrixやwritematrixに変更して、質問の解答にあったようなtry/catchを使わなくてもエラーが出なかったので、勝手に、readmatrixやwritematrixはファイル読み込み/書き込みの終了を検出しているのかと考えていたのですが、使用しているファイルのサイズが変わったあとから、ファイルを読み込んだ配列が[ ]なのでエラーが出て止まる(実際には配列が[ ] なので配列を読み込む際に”位置 1 のインデックスが配列範囲を超えています。”のエラーが出る)ことが頻発するようになりました。
ファイルの存在を確認した後にreadmatrixでファイル読み込みを行ったり、writematrixでファイルの書き込みを行っているのですが、
一応、事前に読み込む配列の大きさはわかっているので、
for wts=1:10000
[qcr,qcc]=size(querycsv);
if qcc<qn
pause(0.01);
else
break
end
end
querycsv(query.csvをreadmatrixで読み込んだ配列)の列数はわかっているので、上記のような待ちを入れてみたのですが、やはりquerycsvが[ ] の時があり、結局”位置 1 のインデックスが配列範囲を超えています。”のエラーが出ます。
①readmatrixやwritematrixはファイル読み込み/書き込みの終了を検出しているのか
②2つのアプリケーション間でcsvファイルでのデータ受け渡しでなく、書き込み速度の点で速いと考えられる別のファイルによるデータ受け渡しは可能か、また、その際、ファイル読み込み/書き込みの終了確認は可能か
以上についてご教示いただきたく。
0 个评论
回答(1 个)
Etsuo Maeda
2020-4-13
回答が付いてないないようなので。
statusの戻り値が無いので、どちらの関数も書き込み可不可の判定はかかっていないはずです。
fopenなど低水準関数をつかってみてはどうでしょうか。
以上、ご参考まで
3 个评论
Etsuo Maeda
2020-4-13
fopenでファイルが開けなければ、-1が返ります。開ければ3以上のfile idが返ります。
実際に、なにをどう動かしているのかは分かりかねますが、MATLAB上で動作させているのであれば、無理にファイルに書き出す必要は無く、Workspaceで値をやりとりすれば良いかと思います。
例えば、assignin関数を使えば、関数の中からbase workspaceに変数を置くことが可能です。
以上、ご参考まで
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 スプレッドシート 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!