Getting Started | ![]() ![]() |
if
if
ステートメントは、論理式を評価し、評価が真
のとき、ステートメント群を実行します。オプションのキーワード
elseif
や else
は、別のステートメント群の実行に関するものです。if
に関連するキーワード end
は、それらの間のステートメント群を終了させます。ステートメント群は、4つのキーワードで記述されます。丸括弧や鍵括弧は含まれません。
次数 n の魔方陣を作成するMATLABのアルゴリズムは、3つの異なる場合を含んでいます。n が奇数のとき、n が偶数で4の倍数でないとき、n が4の倍数のときです。つぎのように記述します。
if rem(n,2) ~= 0 M = odd_magic(n) elseif rem(n,4) ~= 0 M = single_even_magic(n) else M = double_even_magic(n) end
この例題で、3つの場合は互いに排他的ですが、そうでない場合には最初の真 の条件が実行されます。
比較演算子と if
ステートメントが行列にどのように機能するかを理解することは重要です。2つの変数間の等価性をチェックしたい場合には、つぎのようにします。
if A == B, ...
これは正しいMATLABのコードで、A
と B
がスカラであるときに予想されることを実行します。しかし、A
と B
が行列のとき、A == B
はそれらが等しいかどうかをチェックしないで、それらの等しい部分を探します。すなわち、結果は、要素毎の等価性を表わす0と1からなる行列です。実際に、A
と B
が同じ大きさでなければ、A == B
はエラーになります。
2つの変数間の等価性をチェックする適切な方法は、関数
isequal
を使うことです。
if isequal(A,B), ...
つぎに、このことを強調する他の例題を示します。A
と B
がスカラである場合、つぎのプログラムは、予想通りの結果になります。列を交換した魔方陣を含む行列のほとんどの組に対して、行列の条件
A > B
, A < B
または A == B
はすべての
要素に対して真ではなく、そのため else
の部分が実行されます。
if A > B 'greater' elseif A < B 'less' elseif A == B 'equal' else error('Unexpected situation') end
つぎの関数は、if
と共に使って、行列の比較結果をスカラ条件にするのに使うことができます。
isequal isempty all any
![]() |
MATLABによるプログラミング | switch と case | ![]() |