Programming with MATLAB    

演算子と関数の多重定義

多くの場合、引数がオブジェクトのケースに対して、MATLAB演算子や関数の挙動 を変更したい場合があります。これは、基準になる関数を多重定義することによ り可能になります。多重定義は、入力引数の種々のタイプ、種々の入力数を取り 扱う機能をもたせ、最も高い優先順位をもつものに対しても演算を適切に行うこ とができます。オブジェクトの優先順位に関する情報は、"オブジェクトの優先順位"を参照してください。

演算子の多重定義

各々の組み込みMATLAB演算子は、関連した関数名(たとえば、+演算子が、関連した関数plus.m)をもっています。ユーザは、クラスディレクトリの中で適切な名前をもつM-ファイルを作成することにより、任意の演算を多重定義することができます。たとえば、pまたはqのどちらかがタイプclass_nameのオブジェクトならば、つぎの式

は、関数@class_name/plus.mが存在しているなら、それを読み込みます。pq が、共に異なるクラスのオブジェクトの場合、MATLABは、優先順位則を適用して、 使用するメソッドを決定します。

多重定義演算子の例題

多重定義演算子の例題に対しては、つぎの節を参照してください。

 

つぎのテーブルは、MATLABのほとんどの演算子に関する関数名の一覧です。

演算
M-ファイル
詳細
a + b
plus(a,b)
バイナリ加算
a - b
minus(a,b)
バイナリ減算
-a
uminus(a)
単項マイナス
+a
uplus(a)
単項プラス
a.*b
times(a,b)
要素単位の乗算
a*b
mtimes(a,b)
行列乗算
a./b
rdivide(a,b)
要素単位の右除算
a.\b
ldivide(a,b)
要素単位の左除算
a/b
mrdivide(a,b)
行列の右除算
a\b
mldivide(a,b)
行列の左除算
a.^b
power(a,b)
要素単位のベキ乗
a^b
mpower(a,b)
行列のベキ乗
a < b
lt(a,b)
より小さい
a > b
gt(a,b)
より大きい
a <= b
le(a,b)
より小さいか等しい
a >= b
ge(a,b)
より大きいか等しい
a ~= b
ne(a,b)
等しくない
a == b
eq(a,b)
等しい
a & b
and(a,b)
論理和
a | b
or(a,b)
論理積
~a
not(a)
論理偽
a:d:b
a:b
colon(a,d,b)
colon(a,b)
コロン演算子
a'
ctranspose(a)
複素共役転置
a.'
transpose(a)
行列転置
command window output
display(a)
表示メソッド
[a b]
horzcat(a,b,...)
水平連結
[a; b]
vertcat(a,b,...)
垂直連結
a(s1,s2,...sn)
subsref(a,s)
サブスクリプトを使った参照
a(s1,...,sn) = b
subsasgn(a,s,b)
サブスクリプトを使った代入
b(a)
subsindex(a)
サブスクリプトを使ったインデックス


  Converterメソッド 演算子の多重定義