前言
以下是博主精心整理的兩個matlab專欄,包含入門到精通及實戰內容,需要的小伙伴可根據自己需求自行訂閱,
MATLAB-30天帶你從入門到精通
https://blog.csdn.net/wenyusuran/category_10614422.html
MATLAB深入理解高級教程(附原始碼)
https://blog.csdn.net/wenyusuran/category_2239265.html
在博主的資源中也有各種演算法的應用實體源代碼,需要的小伙伴自取喲,
在創建了矩陣之后,我們經常需要訪問矩陣中的某一個或者一些元素,另外可能需要對其中的某些元素重新賦值或者洗掉某一部分元素,本文介紹如何進行矩陣的尋訪與賦值,
1.矩陣的標識
本節介紹單個元素標識和尋訪的3種方式:全下標、單下標、邏輯1標識,
1.1 全下標標識
經典數學教科書在引述具體矩陣元素時,通常采用全下標標識法,即指出某一元素是在第幾行第幾列,這種標識方法的優點是:幾何概念清楚,引述簡單,全下標標識法在MATLAB的尋訪和賦值中因為最為直觀,所以它最為常用,
對于二維矩陣來說,全下標標識由兩個下標組成:行下標、列下標,如A(3,5)表示二維矩陣A的第3行第5列,
這里值得注意的是,MATLAB中對下標的標識是從1開始的,就是和我們平時在數學中使用的說法是一致的,這和其他一些編程語言從0開始標識是不同的,
1.2 單下標標識
MATLAB盡管是以矩陣作為基本的計算單元,但是矩陣的后臺存盤并不是像顯示出來的那樣成長方形排列的,而是按照單下標標識作為一列存盤到記憶體中,單下標標識就是“只用一個下標來指明元素在矩陣中的位置”,當然,這樣做首先要對二維矩陣的所有元素進行“一維編號”,所謂“一維編號”就是:先設想把二維矩陣的所有列,按照先左后右的次序首尾相連排成一維長列,然后自上而下對元素位置進行編號,
單下標與全下標的轉換關系:以m′n的二維矩陣A為例,若全下標的元素位置是“第a行,第b列”,那么相應的單下標則為c=(b-1)*m+a,
在MATLAB中,有兩個函式可以實作全下標和單下標的轉換,
sub2ind: 根據全下標換算出單下標,
ind2sub: 根據單下標換算出全下標,
單下標的優勢是在特定情境下使用更為簡潔,例如編制某些回圈的時候只需要一個回圈變數就可以了,另外比如需要將某陣列賦值給另一維數不同的陣列的時候,
1.3 邏輯1標識
在實際使用中,有時會遇到尋找矩陣中大于或者小于某值的元素的問題,這時就可以使用邏輯1標識法,邏輯1標識用一個基于原矩陣A相對位置的邏輯陣列B來對矩陣A進行尋訪,資料B中每一個true值也就是1表示相對位置的A中元素可以被尋訪,如果需要通過邏輯1標識來對矩陣進行尋訪,只需將符合條件的元素位置的標識設定為邏輯1即可,
采用邏輯1標識的程式在速度方面具有一定的優勢,
2. 矩陣的尋訪
【例2-7】 二維矩陣的尋址,
>> a=[1 2 3; 4 5 6] % 創建測驗矩陣
a =
1 2 3
4 5 6
>> A=a(2,2) % 全下標尋訪
A =
5
>> b=a(4) % 單下標尋訪
b =
5
>> B=a>5 % 回傳邏輯下標
B =
0 0 0
0 0 1
>> c=a(B) % 邏輯下標尋訪
c =
6
>> d=a(1,:) % 通過使用冒號可以尋訪全行元素
d =
1 2 3
>> e=a(:,2) % 通過使用冒號可以尋訪全列元素
e =
2
5
>> f=a(:) % 單下標尋訪
f =
1
4
2
5
3
6
>> g=a(:,[1 3]) % 尋訪地址可以是向量,以同時尋訪多個元素
g =
1 3
4 6
本例中的B=a>5和c=a(B),就是采用邏輯1標識法訪問矩陣a中大于5的元素,
3.矩陣的賦值
在了解了矩陣的尋訪方法以后,給矩陣中的特定元素賦值也就成了一個很簡單的事情,下面舉例來說明,
【例2-8】 二維矩陣的賦值,
>> a=magic(4)
a =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> a(3,4)=0 % 對單個元素進行賦值
a =
16 2 3 13
5 11 10 8
9 7 6 0
4 14 15 1
>> a(:,1)=1 % 對第一列進行賦值
a =
1 2 3 13
1 11 10 8
1 7 6 0
1 14 15 1
>> a(14)=16 % 采用全下標對第14個元素進行賦值
a =
1 2 3 13
1 11 10 16
1 7 6 0
1 14 15 1
3.1 進行陣列運算的常用函式
在MATLAB中有一些常用函式,這些函式在日常的編程計算程序中會經常遇到,一般是基本的數學概念在MATLAB中的函式表達方式,這些函式在MATLAB中可以同時作用于整個矩陣或者陣列,應用起來非常方便,不需要再另寫回圈程式來對各元素分別進行計算,掌握這些函式是進一步學習的基礎,MATLAB人性化的地方在于其自帶函式基本是按照相對應的英文名稱縮寫而來,所以便于記憶,
3.2 函式陣列運算規則的定義
對于(m′n)的陣列

,函式
的陣列運算規則是指:

也就是說函式的陣列運算是指將函式作用于矩陣中的每一個元素,并將最后的結果儲存為與原矩陣行列數相同的矩陣,
3.3 進行陣列運算的常用函式
本小節列出進行陣列運算的常用函式,常用基本數學函式見表2-2,常用三角函式見表2-3,常用適用于向量的函式見表2-4,
表2-2 MATLAB常用的基本數學函式
| 函 數 | 說 明 | 函 數 | 說 明 |
| abs(x) | 純量的絕對值或向量的長度 | rat(x) | 將實數x化為分數表示 |
| angle(z) | 復數z的相角 | sign(x) | 符號函式 當x<0時,sign(x)=-1; 當x=0時,sign(x)=0; 當x>0時,sign(x)=1 |
| sqrt(x) | 開平方 | rem(x,y) | 求x除以y的余數 |
| real(z) | 復數z的實部 | gcd(x,y) | 整數x和y的最大公因數 |
| imag(z) | 復數z的虛部 | lcm(x,y) | 整數x和y的最小公倍數 |
| conj(z) | 復數z的共軛復數 | exp(x) | 自然指數 |
| round(x) | 四舍五入至最近整數 | pow2(x) | 2的指數 |
| fix(x) | 無論正負,向0的方向取最近整數 | log(x) | 以e為底的對數,即自然對數 |
| floor(x) | 舍去法取最近整數 | log2(x) | 以2為底的對數 |
| ceil(x) | 進一法取最近整數 | log10(x) | 以10為底的對數 |
表2-3 MATLAB常用的三角函式
| 函 數 | 說 明 | 函 數 | 說 明 |
| sin(x) | 正弦函式 | sinh(x) | 超越正弦函式 |
| cos(x) | 余弦函式 | cosh(x) | 超越余弦函式 |
| tan(x) | 正切函式 | tanh(x) | 超越正切函式 |
| asin(x) | 反正弦函式 | asinh(x) | 反超越正弦函式 |
| acos(x) | 反余弦函式 | acosh(x) | 反超越余弦函式 |
| atan(x) | 反正切函式 | atanh(x) | 反超越正切函式 |
| atan2(x,y) | 四象限的反正切函式 |
表2-4 適用于向量的常用函式
| 函 數 | 說 明 | 函 數 | 說 明 |
| min(x) | 向量x的元素的最小值 | norm(x) | 向量x的歐氏長度,也就是范數 |
| max(x) | 向量x的元素的最大值 | sum(x) | 向量x的元素總和 |
| mean(x) | 向量x的元素的平均值 | prod(x) | 向量x的元素總乘積 |
| median(x) | 向量x的元素的中位數 | cumsum(x) | 向量x的累計元素總和 |
| std(x) | 向量x的元素的標準差 | cumprod(x) | 向量x的累計元素總乘積 |
| diff(x) | 向量x的相鄰元素的差 | dot(x, y) | 向量x和y的內積 |
| sort(x) | 對向量x的元素進行排序 | cross(x, y) | 向量x和y的外積 |
【例2-9】 陣列運算示例,
>> a=[1 2 4 9;16 25 36 49]
a =
1 2 4 9
16 25 36 49
>> b=sqrt(a) % 應用函式對矩陣中的每一個元素分別開方
b =
1.0000 1.4142 2.0000 3.0000
4.0000 5.0000 6.0000 7.0000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272604.html
標籤:AI
