"dmatrix=r​eadmatrix(​"data.txt"​)"で大きなデータを​読み込む際に,"fr​ead failed: error : Invalid argument for \\filepath of data.txt"と​表示された。しかし,​data.txtが問​題なく読まれたようで​あるが、そのエラーの​原因などをご教示願い​します。

b=readmatrix("Euler_angles");
>> ReadEulerAngles
fileStream::DetectCharset():fread failed: error : Invalid argument for \\ndata01\documents\0020_オーステナイト系ステンレス鋼溶接部\溶接CAFDデータ(2023.4.17) 1620度 CAセル0.63mm\Euler_angles.txt

4 Comments

【原因】readmatrix 関数がUNCパス(\\ndata01\...) に対応していない為
【対応方法】
  1. ファイルサーバ (\\ndata01\...) のUNCパスをローカルドライブに割り当てる(下記リンク先参考)
  2. URL(http://...やhttps://...)でアクセスする (ftp/scp/smb等http以外はNG)
  3. ローカルドライブにコピーしてからアクセスする
Uneo様
ご教示、ありがとうございます。
ご案内の方法で確認しました。問題が解消しておりません。
ファイルサイズが小さな場合にはこのような問題がなかったのですが、今回は読み込もうファイルのサイズが5.6GB程度で問題が生じることで、恐らくファイルサイズに起因するものではないかと考えていますが。
また、よろしくお願いします。
なるほど確かにサイズの大きいファイルですね。下記を確認すると問題の原因を切り分ける事が出来ると思います。
  • ローカルパスの場所に5.6GB程度のファイルを置いてアクセスしても同じエラーが出るか
  • UNCパスの当該箇所に数MB程度のファイルを置いてアクセスしても同じエラーが出るか
ワークスペースに読み込む配列サイズの最大値は以下の方法で設定でき、OSで管理されるメモリを最大限まで使える様に設定できます。[ホーム] タブの [環境] セクションで [基本設定] をクリック、 [MATLAB][ワークスペース] を選択します。※ MATLAB Online では「最大配列サイズの基本設定」が環境によって設定され、変更出来ない様です。私が試したMATLAB Online 環境では「最大配列サイズの基本設定」が 5.0GB でした。
fileStream::DetectCharset():fread failed: error : Invalid argument
上記のエラーはやはりパスに下記の様な原因があるのではないかと思います。
  • UNCパス
  • パスに含まれる2バイト文字
  • パスに含まれる(半角)スペース文字
>ファイルサイズが小さな場合にはこのような問題がなかったのですが、
すいません。そういう事でしたね。
大きなファイルにアクセスする為の方法を用いるのは如何でしょうか?

Sign in to comment.

Answers (0)

Products

Release

R2022b

Asked:

on 24 Apr 2023

Commented:

on 30 Apr 2023

Community Treasure Hunt

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

Start Hunting!