Programming with MATLAB | ![]() ![]() |
演算子と関数の多重定義
多くの場合、引数がオブジェクトのケースに対して、MATLAB演算子や関数の挙動 を変更したい場合があります。これは、基準になる関数を多重定義することによ り可能になります。多重定義は、入力引数の種々のタイプ、種々の入力数を取り 扱う機能をもたせ、最も高い優先順位をもつものに対しても演算を適切に行うこ とができます。オブジェクトの優先順位に関する情報は、"オブジェクトの優先順位"を参照してください。
演算子の多重定義
各々の組み込みMATLAB演算子は、関連した関数名(たとえば、+演算子が、関連した関数plus.m
)をもっています。ユーザは、クラスディレクトリの中で適切な名前をもつM-ファイルを作成することにより、任意の演算を多重定義することができます。たとえば、p
またはq
のどちらかがタイプclass_name
のオブジェクトならば、つぎの式
p + q
は、関数@class_name/plus.m
が存在しているなら、それを読み込みます。p
とq
が、共に異なるクラスのオブジェクトの場合、MATLABは、優先順位則を適用して、
使用するメソッドを決定します。
多重定義演算子の例題
多重定義演算子の例題に対しては、つぎの節を参照してください。
つぎのテーブルは、MATLABのほとんどの演算子に関する関数名の一覧です。
演算 |
M-ファイル |
詳細 |
a + b |
|
バイナリ加算 |
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 |
(a,d,b) colon(a,b) |
コロン演算子 |
a' |
ctranspose(a) |
複素共役転置 |
a.' |
transpose(a) |
行列転置 |
command window output |
|
表示メソッド |
[a b] |
horz |
水平連結 |
[a; b] |
vertcat(a,b,...) |
垂直連結 |
a(s1,s2,...sn) |
|
サブスクリプトを使った参照 |
a(s1,...,sn) = b |
(a,s,b) |
サブスクリプトを使った代入 |
b(a) |
|
サブスクリプトを使ったインデックス |
![]() |
Converterメソッド | 演算子の多重定義 | ![]() |