Loading... # Matlab 运算符 <div class="tip inlineBlock info"> 相关视频 https://www.bilibili.com/video/BV19J411W7Ta?p=7 </div> ## 算术运算 <div class="tip inlineBlock info"> 若标量需要作为矩阵参与运算,则标量转化同型的矩阵,矩阵内所有元素都为这个标量。 </div> ### 矩阵运算 1. 加减运算 `+` `-` <div class="tip inlineBlock info"> 相当于矩阵的加法和减法 </div> 要求两个矩阵同型,则把矩阵中相应元素相加减 矩阵也可以和标量相加减、相当于把矩阵里每一个元素相加减。 2. 乘法运算 `*` <div class="tip inlineBlock info"> 相当于矩阵的乘法,若A, B中有一个为标量,则相当于矩阵的数乘运算。 </div> A * B 要求A的列数与B的行数相等 3. 除法运算 `/` `\` <div class="tip inlineBlock info"> 相当于矩阵的求逆和矩阵的乘法 </div> 右除 `/`: A / B,要求 B 可逆,等价于 A * inv(B) 左除 `\\`: A \ B,要求 A 可逆,等价于 inv(A) * B 两个矩阵的左除和右除的结果一般不相等,若其中有一个为标量,则结果相等。 4. 乘方运算 `^` <div class="tip inlineBlock info"> 相当于方阵幂运算 </div> 要求矩阵为方矩。 ### 点运算 点运算符有: `.*`、`./`、`.\`、`.^` 点运算符是 matlab 一个很有特色的运算符,不同于矩阵的运算。 要求两个矩阵同型,将两个矩阵对应元素进行运算相应运算。 下面这个例子对比`A * A`和`A .* A`的区别。 ```matlab A = [1,2;3,4] A * A A .* A ``` <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-3f678b8c3669e34cb561baaa6ba4a50e63" aria-expanded="true"><div class="accordion-toggle"><span style="">矩阵A</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-3f678b8c3669e34cb561baaa6ba4a50e63" class="collapse collapse-content"><p></p> $$ \begin{aligned} A=\\ &\begin{matrix} 1&2 \\ 3&4 \\ \end{matrix} \end{aligned} $$ <p></p></div></div></div> <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-c652a15f6100a68b846a49484a38ff3f85" aria-expanded="true"><div class="accordion-toggle"><span style="">A * A</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-c652a15f6100a68b846a49484a38ff3f85" class="collapse collapse-content"><p></p> $$ \begin{aligned} A \ * \ A=\\ &\begin{matrix} 7&10 \\ 15&22 \\ \end{matrix} \end{aligned} $$ <p></p></div></div></div> <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-5e9008c811b403154c67f246c4d6072933" aria-expanded="true"><div class="accordion-toggle"><span style="">A .* A</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-5e9008c811b403154c67f246c4d6072933" class="collapse collapse-content"><p></p> $$ \begin{aligned} A\ .*\ A=\\ &\begin{matrix} 1&4 \\ 9&16 \\ \end{matrix} \end{aligned} $$ <p></p></div></div></div> ## 关系运算符 关系运算符有:`<`、`<=`、`>`、`>=`、`==`、`~=`(不等于)。 规则: - 若两个操作数都为标量,则直接标记,关系成立结果为`1`,不成立结果为`0`。 - 若两个操作数是同型矩阵,则比较相应位置的元素,结果由0、1组成的矩阵。 - 若两个操作数是同型矩阵,则比较相应位置的元素,结果由`0`、`1`组成的矩阵。 - 若其中一个操作数是矩阵,则将标量转化为矩阵再比较。 ## 逻辑运算 逻辑运算符:`&`、`|`、`~` 分别表示 且 或 非。 运算规则与 Java/C++ 的类似。 规则与关系运算符相同。 有一点不同的是,在 Java/C++的条件表达式中,我们会用这种形式表达逻辑运算 ```java if (a > 0 && a < 5) { // do someting } ``` 但在matlab中,我们应该写 ```matlab if a > 0 & a < 5 % do something end ``` 尽管在Java/C++中`&&`可以用`&`代替,但通常为了和位运算区分,我们不会这么做。而在matlab中,我们表示且运算只能使用`&`。 ## 运算符优先级 优先级和C++基本一致,从高到低的顺序是:算术运算、关系运算、逻辑运算。 但单目逻辑运算`~`(非) 优先级最高。 最后修改:2020 年 05 月 11 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏