第三章 運算符
1.16 算術(shù)運算
1.算術(shù)運算(arithmetic)主要指加減乘除、冪和舍入等運算
2.說明
Matlab有兩種不同類型的算術(shù)運算:數(shù)組運算和矩陣運算
數(shù)組運算基于元素的運算,支持任意向量、矩陣和多維數(shù)組
矩陣運算遵循線性代數(shù)的規(guī)則
字符(.)區(qū)分矩陣運算和數(shù)組運算
數(shù)組運算和矩陣運算的加減法則相同,所以.+和.-是不必要的
運算數(shù)之一為標(biāo)量時,乘法法則相同,所以.*是不必要的
運算數(shù)都為標(biāo)量時,除法法則相同,所以./是不必要的
3.兩種運算符
數(shù)組運算符匯總表
運算符 | 功能 | 描述 | |
+ | 加法 | A+B | plus |
+ | 一元加 | +A | uplus |
– | 減法 | A-B | minus |
– | 一元減 | -A | uminus |
.* | 乘法 | A.*B是的對應(yīng)元素的乘積 | times |
.^ | 冪 | A.^B是對應(yīng)元素A(i,j)的B(i,j)次冪 | power |
./ | 右除 | A./B是對應(yīng)元素的A(i,j)/B(i,j) | rpide |
. | 左除 | A.B是對應(yīng)元素的B(i,j)/A(i,j) | lpide |
.’ | 轉(zhuǎn)置 | A.’是數(shù)組A的轉(zhuǎn)置 | transpose |
矩陣運算符匯總表
運算符 | 功能 | 描述 | 函數(shù) |
* | 矩陣乘法 | A*B | mtimes |
矩陣左除 | x = AB是等式Ax = B的解 | mlpide | |
/ | 矩陣右除 | x = B/A是等式xA = B的解 | mrpide |
^ | 矩陣的冪 | 如果B是一個標(biāo)量,A^B是A的B次冪;對于其他值B,計算涉及特征值和特征向量 | mpower |
‘ | 復(fù)共軛轉(zhuǎn)置 | A’是A的轉(zhuǎn)置。對于復(fù)矩陣,是復(fù)共軛轉(zhuǎn)置 | ctranspose |
4.實例演示
%1_16
a=[1 2;3 4]
a+a %數(shù)組加法
a-a %數(shù)組減法
a.*a %數(shù)組乘法:對應(yīng)元素乘積
a*a %矩陣乘法:線性代數(shù)
a./a %數(shù)組除法:對應(yīng)元素相除
a/a %矩陣除法:得出單位矩陣對角線為1
a.^3 %數(shù)組冪:單個元素分別求冪
a^3 %矩陣冪:即a*a*a
a*a*a
a*5 %有標(biāo)量作為計算數(shù)時,數(shù)組和矩陣乘法法則相同
a.*5 %因此可用矩陣乘法*替代數(shù)組乘法
a’ %復(fù)共軛轉(zhuǎn)置
a.’ %轉(zhuǎn)置:行數(shù)變列數(shù)
sin(a) %對a中每個元素求sin(調(diào)用函數(shù)大多執(zhí)行數(shù)組運算)
[sin(1) sin(2);sin(3) sin(4)] %與上式相同
exp(a) %數(shù)組的指數(shù)運算:函數(shù)調(diào)用,同上述sin運算
expm(a) %矩陣的指數(shù)冪運算:函數(shù)后加m,matrix
(-1)^(1/2) %負(fù)數(shù)開方產(chǎn)生虛數(shù)單位
sqrt(-1) %同上
(5+2i)*(5-2i) %復(fù)數(shù)運算
1.17 算術(shù)常用函數(shù)
1.介紹一些算術(shù)運算的常用函數(shù)
2.認(rèn)識函數(shù)
加plus
減minus
乘times
除rpide
矩陣乘法mtimes
矩陣左除mlpide
求和sum
乘積prod
舍入round
向-inf舍入floor
向inf舍入ceil
向0舍入fix
模操作mod
3.實例演示
%1_17
%freexyn
a=[1 2;3 4]
a+a %數(shù)組加法
plus(a,a) %數(shù)組加法(函數(shù)形式)
minus(a,a) %數(shù)組減法
times(a,a) %數(shù)組乘法:單個元素對應(yīng)相乘
rpide(a,a)
mtimes(a,a) %矩陣乘法
mlpide(a,a) %矩陣除法
sum(a) %矩陣a求和:按列操作
sum([1 2 3 4]) %行向量求和:所有元素加和
sum([1 2 3 4]’) %轉(zhuǎn)置為列向量:同為所有元素加和
prod(a) %數(shù)組a中元素求乘積:按列相乘;該函數(shù)若輸入行、列向量則所有元素乘積
round(2.6) %舍入:就近舍入即四舍五入
floor(2.6) %向負(fù)無窮舍入
ceil(2.3) %向正無窮舍入
fix(2.6) %向0舍入
fix(-2.6)
mod(5,2) %余數(shù)(模操作):被除數(shù)、除數(shù)
rem(5,2) %求余數(shù)(大多情況與mod相同)
mod(-5,2) %被除數(shù)為負(fù)數(shù)時,結(jié)果不一樣
rem(-5,2)
1.18 邏輯運算
1.邏輯型和邏輯運算
邏輯型(logical)數(shù)據(jù)是用數(shù)字1和0分別表示真(true)或假(false)的狀態(tài)
2.認(rèn)識函數(shù)
邏輯型logical
真true
假false
判斷邏輯型islogical
全為真all
是否為真any
3.說明
Matlab中一些運算會返回邏輯值,表示一個條件是否被滿足
可以使用這些邏輯值來索引數(shù)組或執(zhí)行條件代碼
邏輯運算符
符號 | 功能 | 函數(shù) |
& | 邏輯與 | and |
| | 邏輯或 | or |
~ | 邏輯非 | not |
&& | 短路的邏輯與 | |
|| | 短路的邏輯或 |
邏輯真值表
A | B | and A & B | or A | B | xor xor(A,B) | not ~A |
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 |
4.實例演示
%1_18
a=[0 1 2 -1]
logical(a) %創(chuàng)建邏輯型:0為假返回邏輯0,其他非0數(shù)字都是真返回1
islogical(a)
islogical(b)
true & false %邏輯與
true | false %邏輯或
~true
1 & 0
2 & 0
~100
1 && 0 %短路的與:功能與“與”相同
1 || 0
% [1 0] && [0 0] %短路的與、或只適用于標(biāo)量運算
[1 0] & [0 0] %邏輯與可以用于數(shù)組
all([0 1 1]) %判斷全為真
all([1 1 1])
any([0 1 1]) %判斷任一為真,有一個真則結(jié)果為真,全為假結(jié)果為假
any([1 1 1])
any([0 0 0])
c=~a %a取非再賦值給c,則c為邏輯數(shù)組[1 0 0 0]
a(~mod(a,2)) %a中偶數(shù)余數(shù)取到0再取非則為真返回1,邏輯真被索引到返回相應(yīng)偶數(shù)元素
true & [] %結(jié)果為空的邏輯數(shù)組,涉及到空矩陣的任何邏輯運算結(jié)果都是空邏輯數(shù)組
1.19 關(guān)系運算
1.關(guān)系運算
關(guān)系運算(relational)使用“小于”,“大于”和“不等于”等運算符定量地比較運算數(shù),比較的結(jié)果是一個邏輯數(shù)組,在關(guān)系為真的位置顯示1
作者:freexyn 整理/注釋:韓松岳
2.認(rèn)識函數(shù)
查找元素find
3.關(guān)系運算符
關(guān)系運算符
符號 | 功能 | 函數(shù) |
== | 判斷相等 | eq |
~= | 判斷不等于 | ne |
> | 判斷大于 | gt |
>= | 判讀大于等于 | ge |
< | 判斷小于 | lt |
<= | 判斷小于等于 | le |
4.實例演示
%1_19
a=[1 2 3]
a>1 %分別判斷元素是否大于1,滿足關(guān)系返回邏輯值1,否則0
a>a %返回0 0 0
a>=a %每個數(shù)都等于自己,返回三個1
[]>[] %關(guān)系運算中只要存在空矩陣,結(jié)果都返回空的邏輯數(shù)組
[]==[]
[]==2
%[]==[1 2 3] %報錯,矩陣維度不一致無法比較(進(jìn)行關(guān)系運算)
b=3+4i %復(fù)數(shù)關(guān)系運算
c=3+5i
c<=b %非等于關(guān)系的比較,只比較實部3
c==b %返回0。說明:復(fù)數(shù)關(guān)系運算中,==與~=會比較實部和虛部(上述例子中3和3、4和5),其他非等于關(guān)系的比較,只比較實部
a>1 & a<3 %將兩個邏輯結(jié)果進(jìn)行“與”運算,結(jié)果仍為邏輯值
tf=a>1 & a<3 %將上述結(jié)果賦值給變量tf
a(tf) %使用邏輯索引,提取矩陣中滿足特定條件的元素
index=find(a>1 & a<3) %返回輸入變量中條件為真的元素的線性索引
a(index) %使用線性索引,提取矩陣中滿足特定條件的元素
a(a>1 & a<3)=10 %使用邏輯索引,修改滿足特定條件的元素的值
1.20 運算符的優(yōu)先級
1.Matlab中各類、多種運算符組合使用時的優(yōu)先運算順序
2.優(yōu)先級順序
可以任意組合使用算術(shù)運算符、關(guān)系運算符和邏輯運算符等形成的表達(dá)式進(jìn)行運算,Matlab進(jìn)行運算處理的順序取決于每個運算符的優(yōu)先級。在每個優(yōu)先級中,運算符具有相同的優(yōu)先級,并從左到右進(jìn)行處理。Matlab運算符的優(yōu)先級規(guī)則從最高到最低排序如下
括號 ()
轉(zhuǎn)置 (.’), 冪(.^), 復(fù)共軛轉(zhuǎn)置 (‘), 矩陣的冪(^)
一元減的冪(.^-),一元加的冪(.^+),邏輯非的冪(.^~) 一元減的矩陣的冪(^-), 一元加的矩陣的冪(^+),邏輯非的矩陣的冪 (^~).
一元加(+),一元減(-),邏輯非(~)
乘法(.*),右除(./),左除(.),矩陣的乘法(*),矩陣的右除(/),矩陣的左除 ()
加法 (+), 減法(-)
冒號(:)
關(guān)系運算符(=), (==), (~=)
邏輯與(&)
邏輯或(|)
短路邏輯與(&&)
短路邏輯或 (||)
3.實例演示
%1_20
1>=1+1 %四則運算高于關(guān)系運算符
(1>=1)+1
1:2+3 %四則運算高于冒號運算符
(1:2)+3
1|1&0 %邏輯與高于邏輯或
(1|1)&0
1.21 兼容性
1.基本運算中數(shù)組大小的兼容性(2016b)
2.說明
這里兼容性是指,兩個大小不同的數(shù)組是否能夠進(jìn)行運算
兩個完全相同大小的數(shù)組可以運算
其中之一是標(biāo)量的兩個大小不同的數(shù)組可以運算
一個是行向量,一個是列向量,可以運算
一個是矩陣,一個是具有相同行數(shù)的列向量,可以運算
一個是矩陣,一個是具有相同列數(shù)的行向量,可以運算
一個是矩陣,一個是具有相同行數(shù)和列數(shù)的三維數(shù)組,可以運算
這里的兼容性運算主要指數(shù)組的四則運算
3.實例演示
%1_21
a=[1 2;3 4]
b=[1 2]
c=[3;4]
a+a
a+2 %矩陣與標(biāo)量運算:將標(biāo)量擴(kuò)展為前面矩陣的兼容性大小,再遵循數(shù)組四則運算
a.*2
a*2
b+c %先擴(kuò)展為兼容性大?。篵復(fù)制行、c復(fù)制列,再運算
a+b
a+c
a.*b
a.*c
% a*b %無法運算,不滿足矩陣乘法
a*c %可以運算,但并非兼容性運算,而是滿足矩陣乘法
d=cat(3,a,a) %參數(shù)3是在3維方向連接兩個矩陣a和a
a+d %不同維度的數(shù)組也可兼容性運算
a.*d %可兼容性運算
bsxfun(@plus,a,d) %低版本兼容性運算函數(shù):第一輸入?yún)?shù)表示運算符,后面輸入?yún)?shù)表示運算數(shù)
(第三章結(jié)束,后接第四章)