理工科毕业设计献礼,MATLAB从入门到精通之矩阵是如何实现寻访与赋值的
前言
以下是博主精心整理的兩個matlab專欄,包含入門到精通及實戰(zhàn)內(nèi)容,需要的小伙伴可根據(jù)自己需求自行訂閱。
MATLAB-30天帶你從入門到精通
https://blog.csdn.net/wenyusuran/category_10614422.html
MATLAB深入理解高級教程(附源碼)
https://blog.csdn.net/wenyusuran/category_2239265.html
在博主的資源中也有各種算法的應用實例源代碼,需要的小伙伴自取喲。
在創(chuàng)建了矩陣之后,我們經(jīng)常需要訪問矩陣中的某一個或者一些元素,另外可能需要對其中的某些元素重新賦值或者刪除某一部分元素。本文介紹如何進行矩陣的尋訪與賦值。
1.矩陣的標識
本節(jié)介紹單個元素標識和尋訪的3種方式:全下標、單下標、邏輯1標識。
1.1 全下標標識
經(jīng)典數(shù)學教科書在引述具體矩陣元素時,通常采用全下標標識法,即指出某一元素是在第幾行第幾列。這種標識方法的優(yōu)點是:幾何概念清楚,引述簡單。全下標標識法在MATLAB的尋訪和賦值中因為最為直觀,所以它最為常用。
對于二維矩陣來說,全下標標識由兩個下標組成:行下標、列下標。如A(3,5)表示二維矩陣A的第3行第5列。
這里值得注意的是,MATLAB中對下標的標識是從1開始的,就是和我們平時在數(shù)學中使用的說法是一致的。這和其他一些編程語言從0開始標識是不同的。
1.2 單下標標識
MATLAB盡管是以矩陣作為基本的計算單元,但是矩陣的后臺存儲并不是像顯示出來的那樣成長方形排列的,而是按照單下標標識作為一列存儲到內(nèi)存中。單下標標識就是“只用一個下標來指明元素在矩陣中的位置”。當然,這樣做首先要對二維矩陣的所有元素進行“一維編號”。所謂“一維編號”就是:先設想把二維矩陣的所有列,按照先左后右的次序首尾相連排成一維長列,然后自上而下對元素位置進行編號。
單下標與全下標的轉(zhuǎn)換關(guān)系:以m′n的二維矩陣A為例,若全下標的元素位置是“第a行,第b列”,那么相應的單下標則為c=(b-1)*m+a。
在MATLAB中,有兩個函數(shù)可以實現(xiàn)全下標和單下標的轉(zhuǎn)換。
sub2ind:????根據(jù)全下標換算出單下標。
ind2sub:????根據(jù)單下標換算出全下標。
單下標的優(yōu)勢是在特定情境下使用更為簡潔,例如編制某些循環(huán)的時候只需要一個循環(huán)變量就可以了,另外比如需要將某數(shù)組賦值給另一維數(shù)不同的數(shù)組的時候。
1.3 邏輯1標識
在實際使用中,有時會遇到尋找矩陣中大于或者小于某值的元素的問題,這時就可以使用邏輯1標識法。邏輯1標識用一個基于原矩陣A相對位置的邏輯數(shù)組B來對矩陣A進行尋訪。數(shù)據(jù)B中每一個true值也就是1表示相對位置的A中元素可以被尋訪。如果需要通過邏輯1標識來對矩陣進行尋訪,只需將符合條件的元素位置的標識設置為邏輯1即可。
采用邏輯1標識的程序在速度方面具有一定的優(yōu)勢。
2. 矩陣的尋訪
【例2-7】?二維矩陣的尋址。
>> a=[1 2 3; 4 5 6]????? ??? %??創(chuàng)建測試矩陣
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?進行數(shù)組運算的常用函數(shù)
在MATLAB中有一些常用函數(shù),這些函數(shù)在日常的編程計算過程中會經(jīng)常遇到,一般是基本的數(shù)學概念在MATLAB中的函數(shù)表達方式。這些函數(shù)在MATLAB中可以同時作用于整個矩陣或者數(shù)組,應用起來非常方便,不需要再另寫循環(huán)程序來對各元素分別進行計算。掌握這些函數(shù)是進一步學習的基礎(chǔ)。MATLAB人性化的地方在于其自帶函數(shù)基本是按照相對應的英文名稱縮寫而來,所以便于記憶。
3.2 函數(shù)數(shù)組運算規(guī)則的定義
對于(m′n)的數(shù)組
,函數(shù)的數(shù)組運算規(guī)則是指:
?
也就是說函數(shù)的數(shù)組運算是指將函數(shù)作用于矩陣中的每一個元素,并將最后的結(jié)果儲存為與原矩陣行列數(shù)相同的矩陣。
3.3 進行數(shù)組運算的常用函數(shù)
本小節(jié)列出進行數(shù)組運算的常用函數(shù)。常用基本數(shù)學函數(shù)見表2-2,常用三角函數(shù)見表2-3,常用適用于向量的函數(shù)見表2-4。
表2-2??????? ?MATLAB常用的基本數(shù)學函數(shù)
| 函??? 數(shù) | 說??? 明 | 函??? 數(shù) | 說??? 明 |
| abs(x) | 純量的絕對值或向量的長度 | rat(x) | 將實數(shù)x化為分數(shù)表示 |
| angle(z) | 復數(shù)z的相角 | sign(x) | 符號函數(shù)?當x<0時,sign(x)=-1;?當x=0時,sign(x)=0; ?當x>0時,sign(x)=1 |
| sqrt(x) | 開平方 | rem(x,y) | 求x除以y的余數(shù) |
| real(z) | 復數(shù)z的實部 | gcd(x,y) | 整數(shù)x和y的最大公因數(shù) |
| imag(z) | 復數(shù)z的虛部 | lcm(x,y) | 整數(shù)x和y的最小公倍數(shù) |
| conj(z) | 復數(shù)z的共軛復數(shù) | exp(x) | 自然指數(shù) |
| round(x) | 四舍五入至最近整數(shù) | pow2(x) | 2的指數(shù) |
| fix(x) | 無論正負,向0的方向取最近整數(shù) | log(x) | 以e為底的對數(shù),即自然對數(shù) |
| floor(x) | 舍去法取最近整數(shù) | log2(x) | 以2為底的對數(shù) |
| ceil(x) | 進一法取最近整數(shù) | log10(x) | 以10為底的對數(shù) |
表2-3??????? MATLAB常用的三角函數(shù)
| 函??? ?數(shù) | 說??? ?明 | 函??? ?數(shù) | 說??? ?明 |
| sin(x) | 正弦函數(shù) | sinh(x) | 超越正弦函數(shù) |
| cos(x) | 余弦函數(shù) | cosh(x) | 超越余弦函數(shù) |
| tan(x) | 正切函數(shù) | tanh(x) | 超越正切函數(shù) |
| asin(x) | 反正弦函數(shù) | asinh(x) | 反超越正弦函數(shù) |
| acos(x) | 反余弦函數(shù) | acosh(x) | 反超越余弦函數(shù) |
| atan(x) | 反正切函數(shù) | atanh(x) | 反超越正切函數(shù) |
| atan2(x,y) | 四象限的反正切函數(shù) | ? | ? |
表2-4????????適用于向量的常用函數(shù)
| 函??? ?數(shù) | 說??? ?明 | 函??? ?數(shù) | 說??? ?明 |
| min(x) | 向量x的元素的最小值 | norm(x) | 向量x的歐氏長度,也就是范數(shù) |
| max(x) | 向量x的元素的最大值 | sum(x) | 向量x的元素總和 |
| mean(x) | 向量x的元素的平均值 | prod(x) | 向量x的元素總乘積 |
| median(x) | 向量x的元素的中位數(shù) | cumsum(x) | 向量x的累計元素總和 |
| std(x) | 向量x的元素的標準差 | cumprod(x) | 向量x的累計元素總乘積 |
| diff(x) | 向量x的相鄰元素的差 | dot(x, y) | 向量x和y的內(nèi)積 |
| sort(x) | 對向量x的元素進行排序 | cross(x, y) | 向量x和y的外積 |
【例2-9】? 數(shù)組運算示例。
>> a=[1 2 4 9;16 25 36 49]
a =
???? 1???? 2????4???? 9
??? 16??? 25???36??? 49
>> b=sqrt(a)???????????????????%??應用函數(shù)對矩陣中的每一個元素分別開方
b =
??? 1.0000??? 1.4142???2.0000??? 3.0000
??? 4.0000??? 5.0000???6.0000??? 7.0000
總結(jié)
以上是生活随笔為你收集整理的理工科毕业设计献礼,MATLAB从入门到精通之矩阵是如何实现寻访与赋值的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言实战应用精讲50篇(九)-正态分布
- 下一篇: python实战系列之写个好玩的猜拳游戏