理工科毕业设计献礼,MATLAB从入门到精通之矩阵是如何实现寻访与赋值的
前言
以下是博主精心整理的兩個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
總結
以上是生活随笔為你收集整理的理工科毕业设计献礼,MATLAB从入门到精通之矩阵是如何实现寻访与赋值的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言实战应用精讲50篇(九)-正态分布
- 下一篇: python实战系列之写个好玩的猜拳游戏