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

조회 수: 1 (최근 30일)
nknknknk
nknknknk 2017년 12월 15일
댓글: mizuki 2017년 12월 28일
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);
というエラーが出て、図は表示されるのですが、
軸名やタイトル、凡例が表示されません。 どのような原因が考えられるでしょうか。

답변 (1개)

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

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!