操作符重载
为什么要重载操作符
通过实现适合您的类的操作符,您可以将类的对象集成到MATLAB中®语言。例如,包含数值数据的对象可以定义算术操作,如+
,*
,-
所以你可以在算术表达式中使用这些对象。通过实现关系操作符,可以在条件语句中使用对象,例如开关
而且如果
语句。
如何定义操作符
您可以实现MATLAB操作符来处理类的对象。要实现操作符,请定义相关的类方法。
每个运算符都有一个相关联的函数(例如,+运算符有一个相关联的函数plus.m
功能)。可以通过创建具有适当名称的类方法来实现任何操作符。此方法可以执行与正在实现的操作相适合的任何步骤。
有关操作符和相关函数名的列表,请参见<一个href="//www.tianjin-qmedu.com/help/techdoc/matlab_oop/implementing-operators-for-your-class.html" class="intrnllnk">MATLAB算子及相关函数.
操作中的对象优先级
用户定义类的优先级高于内置类。例如,假设问
是类的对象吗双
而且p
用户定义的类。这两个表达式都生成对+
方法,如果它存在:
Q + p p + Q
该方法是否可以添加类的对象双
用户定义的类取决于您如何实现该方法。
当p
而且问
是不同类的对象,MATLAB应用优先级规则来确定使用哪种方法。
方法调用中的对象优先级提供关于MATLAB如何确定调用哪个方法的信息。
运算符优先级
重载运算符保留运算符的原始MATLAB优先级。有关运算符优先级的信息,请参见<一个href="//www.tianjin-qmedu.com/help/techdoc/matlab_prog/operator-precedence.html" class="a">运算符优先级.
示例实现-可添加对象
的加法器
类通过定义类的对象来实现该类对象的加法+
方法。加法器
对象的添加定义为对象的添加NumericData
属性值。的+
方法构造并返回加法器
的对象NumericData
属性值是相加的结果。
的加法器
类还实现了小于操作符(<
),即定义lt
方法。的lt
方法在比较每个对象中的值后返回逻辑值NumericData
财产。
classdef加法器属性NumericData结束方法函数obj =加法器(val)NumericData = val;结束函数R = + (obj1,obj2) a = double(obj1);B = double(obj2);r = Adder(a + b);结束函数d = double(obj) d = obj. numericdata;结束函数Tf = lt(obj1,obj2)如果其中obj1。NumericData < obj2。NumericDatatf = true;其他的Tf = false;结束结束结束结束
使用双重转换器可以将数值添加到加法器
对象,并在类的对象上执行加法。
a = Adder(1:10)
a =加法器属性:NumericData: [1 2 3 4 5 6 7 8 9 10]
添加两个对象:
A + A
ans =加法器属性:NumericData: [2 4 6 8 10 12 14 16 18 20]
添加一个对象,其值可以转换为double:
B = uint8(255) + a
b =加法器属性:NumericData: [256 257 258 259 260 261 262 263 264 265]
比较的对象一个
而且b
使用<
接线员:
A < b
Ans = 1
确保您的类提供了实现类设计所需的任何错误检查。
MATLAB运算符和相关函数
下表列出了MATLAB操作符的函数名称。实现操作符来处理数组(标量展开、向量化算术操作等)也可能需要修改索引和连接。使用此表中的链接可以查找关于每个函数的特定信息。
操作 |
方法来定义 |
描述 |
---|---|---|
|
|
二进制加法 |
|
|
二进制减 |
|
|
一元- |
|
|
一元加 |
|
|
Element-wise乘法 |
|
|
矩阵乘法 |
|
|
右元素除法 |
|
|
左元素除法 |
|
|
矩阵右除法 |
|
|
矩阵左除法 |
|
|
Element-wise权力 |
|
|
矩阵幂 |
|
|
不到 |
|
|
大于 |
|
勒 (a, b) |
小于或等于 |
|
通用电气 (a, b) |
大于或等于 |
|
不 (a, b) |
不等于 |
|
情商 (a, b) |
平等 |
|
而且 (a, b) |
逻辑和 |
|
或 (a, b) |
逻辑或 |
|
不 (一) |
逻辑不 |
|
|
冒号运算符 |
|
|
复共轭转置 |
|
|
矩阵的转置 |
|
|
横向连接 |
|
|
垂直连接 |
|
|
下标引用 |
|
|
下标赋值 |
|
|
下标索引 |