• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MATLABのファイル読み込みに関して)

MATLABのファイル読み込みに関する問題と解決方法

このQ&Aのポイント
  • MATLABでのファイル読み込みに関する問題が発生しています。ファイル名の一部をループさせて読み込もうとした際に、変数の部分が文字化けして読めないというエラーが発生しています。
  • 具体的には、ファイル名がin_1-C110.txtやin_1-C120.txtという形式であり、最初と最後は共通なので、異なる部分をループさせて連続して読もうとしています。
  • しかし、%aの部分が正しく適用されず、ファイル名内の変数の部分が文字化けを起こしています。この問題を解決するための方法を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.1

MATLABに限らず、大体の言語ではデータを異なる型として使用する場合、型変換を行わなければいけません。 ご質問では、a(数値)を変換せずにファイル名(文字列)として使おうとしているため、不具合が発生しています。以下のように型変換を行えば問題ないはずです。 fin = fopen(['in_1-C1' num2str(a) '0.txt'], 'r'); あと、このプログラムは、少なくとも以下の3点については修正した方が良いと思います。 (1) ループカウンタを i に変更   特に理由がない場合、大抵のプログラムではループカウンタとして i 以降の英小文字を使用しています。   時間はt、番号はm,n,no、特に回数を数える場合はcountなどを使用する場合もありますが。 (2) fscan関数実行の前に、変数 fin の検査   fopenに失敗すると-1が返ってきているはずです。 (3) fscan関数はエラートラップをかける   ファイルアクセスは、外的な要因(ファイルの移動、改変、削除など)で比較的エラーの発生しやすい処理です。

orochi_t
質問者

お礼

回答ありがとうございました おかげで無事解決できました ただ、num2strではシンタックスエラーとなったため、int2strを使用しました forのデフォルトはintなのだと思われます C++みたいに for(int a=0; a<9;a++) とか書けるとわかりやすいのですが ともあれありがとうございました

関連するQ&A