MATLAB Answers

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

5 views (last 30 days)
nknknknk
nknknknk on 15 Dec 2017
Commented: mizuki on 28 Dec 2017
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);
というエラーが出て、図は表示されるのですが、
軸名やタイトル、凡例が表示されません。 どのような原因が考えられるでしょうか。

  0 Comments

Sign in to comment.

Answers (1)

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

  4 Comments

Show 1 older comment
mizuki
mizuki on 15 Dec 2017
その時の出力を見てみましょう。 例えば
D(3)
D(3).name
の出力を見て、何かおかしなところはないでしょうか。
nknknknk
nknknknk on 15 Dec 2017
D(3),D(3).name
の出力を見ると、どちらも正しい出力でした..。
mizuki
mizuki on 28 Dec 2017
エラーが起こっているのは i が何のときですか? エラーメッセージから、D(i) あるいは D(i).name でエラーが起こっていると予想できるのですが、3ではなく i のときは試されましたか?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!