適切でないインデック​ス行列を参照していま​す。 エラーについて

DebugFiles='C:\MATLAB';
D = dir(DebugFiles);
for i=1:length(D)
% ファイルオープン
fid=fopen(D(i).name);
end
plot(X,Y)
xlabel('a')
ylabel('b')
title('sample')
legend('n')
で「MATLAB」ファイルをリスト化して,そのファイル一つずつに処理を行うプログラムを組んだのですが、
適切でないインデックス行列を参照しています。
エラーの発生場所 T2 (line 67)
fid=fopen(D(i).name);
というエラーが出て、図は表示されるのですが、
軸名やタイトル、凡例が表示されません。 どのような原因が考えられるでしょうか。

Réponses (1)

mizuki
mizuki le 15 Déc 2017

2 votes

エラーが生じた場合は、まずは課題を分割して原因を突き止めてみてください。
今回の場合、エラーメッセージは「適切でないインデクス行列の参照」になります。インデクスらしきものは、このエラーメッセージの中では
D(i)
の部分になります。 まずは fopen の行にブレークポイントを置いて、ループのインデクス i が何のときにエラーが起こっているか調べてみてください。
ブレークポイントの置き方については以下のドキュメントをご参考にしてください。
  • MATLAB プログラムのデバッグ
なお、予想ですが、dir 関数の出力は . や .. が含まれます。これらを fopen しようとするとエラーが生じるのではないかと思います。この場合、for ループのインデクスの開始数値を3にすれば問題を回避することができます。

4 commentaires

nknknknk
nknknknk le 15 Déc 2017
ご回答ありがとうございます。 ブレークポイントでiが何のときにエラーが起こっているか調べたところ、 i=3.6.11.12.14.16.18・・の時に
適切でないインデックス行列を参照しています。
エラーの発生場所 T2 (line 71)
fid=fopen(D(i).name);
となるのですが、ファイルに問題があるとしか考えられないでしょうか。
mizuki
mizuki le 15 Déc 2017
その時の出力を見てみましょう。 例えば
D(3)
D(3).name
の出力を見て、何かおかしなところはないでしょうか。
nknknknk
nknknknk le 15 Déc 2017
D(3),D(3).name
の出力を見ると、どちらも正しい出力でした..。
mizuki
mizuki le 28 Déc 2017
エラーが起こっているのは i が何のときですか? エラーメッセージから、D(i) あるいは D(i).name でエラーが起こっていると予想できるのですが、3ではなく i のときは試されましたか?

Connectez-vous pour commenter.

Catégories

Question posée :

le 15 Déc 2017

Commenté :

le 28 Déc 2017

Community Treasure Hunt

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

Start Hunting!