Programming and Data Types | ![]() ![]() |
エラーとワーニング
多くの場合、種々のエラーが生じたときに、特別の反応を示すことが望まれます。たとえば、入力がもっと必要ならばユーザに入力するためのプロンプトが表示されたり、より詳しいエラーやワーニングメッセージが表示されたり、デフォルト値を使って計算を再度行ったりすることです。MATLABのエラーを取り扱う機能は、特別なエラー状況をアプリケーションにチェックさせ、その状況に従って適切なコードを実行します。
evalやlasterrを使ったエラーの取り扱い
MATLABの中でのエラーの取り扱いに関する基本的なツールは、
関数eval
は、2つの引数を使った型でエラー取り扱い機能を与えます。
eval ('trystring','catchstring')
trystring
により設定される演算が適切に機能するなら、eval
は単に結果を出力します。trystring
がエラーを発生させると、関数はcatchstringを実行します。catchstringを使って、trystring
により発生するエラーを決め、適切に動作するような関数を設定します。
trystring
/catchstring
型のeval
は、関数lasterr
と共に使うと特に有効です。lasterr
は、MATLABにより発生する最新のエラーメッセージを夫君が文字を出力します。 trystring
により発生するエラーを"捉える"ための関数catchstring
の内部のlasterr
を使います。
たとえば、この関数は、行列演算の間に生じる固有のエラーメッセージに対してチェックするためにlasterr
を使います。エラーメッセージは、両オペランドの内側の大きさが異なるため行列計算が不可能であることを示しています。メッセージが生じたなら、コードは乗算を適切に行うため、行列の一方の大きさを整合性をもつように小さくします。
function C = catchfcn(A,B)
l = lasterr;
j = findstr(l,'Inner matrix dimensions')
if (~isempty(j))
[m,n] = size(A)
[p,q] = size(B)
if (n>p)
A(:,p+1:n) = []
elseif (n<p)
B(n+1:p,:) = []
end
C = A*
B;
else
C = 0;
end
eval
の2つの引数をもった型を関数
catchfcn
と共に使います。
clear A = [1 2 3; 6 7 2; 0 1 5]; B = [9 5 6; 0 4 9]; eval('A*
B','catchfcn(A,B)') A = 1:7; B = randn(9,9); eval('A*
B','catchfcn(A,B)')
![]() |
空行列 | エラーメッセージとワーニングメッセージの表示 | ![]() |