工學第三章數(shù)組和向量課件_第1頁
工學第三章數(shù)組和向量課件_第2頁
工學第三章數(shù)組和向量課件_第3頁
工學第三章數(shù)組和向量課件_第4頁
工學第三章數(shù)組和向量課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第3章 數(shù)組和向量本章重點:數(shù)組的創(chuàng)建方法數(shù)組的操作向量的創(chuàng)建方法向量的操作8/4/20221第1頁,共68頁。3.1 MATLAB數(shù)組 出于數(shù)值計算離散本質的考慮,也出于“向量化”快速處理數(shù)據(jù)的需要,MATLAB總把數(shù)組看作存儲和運算的基本單元,而標量數(shù)據(jù)被看作(11)的數(shù)組。8/4/20222第2頁,共68頁。按照數(shù)組元素個數(shù)和排列方式empty array只有一個元素的標量(scalar)只有一行或一列的向量(vector),行向量(row vector)或列向量(column vector),也可統(tǒng)稱為一維數(shù)組。普通的具有多行多列元素的二維數(shù)組。超過二維的多維數(shù)組(具有行、列、頁等多個

2、維度)。數(shù)組的分類方式:8/4/20223第3頁,共68頁。size(),length()函數(shù) a=1 2 3;4 5 6a = 1 2 3 4 5 6 size(a)ans = 2 3 length(a)ans = 3n維數(shù)組A,Size()函數(shù)的調用格式:1:sz=size(A),將返回一個n維向量,其中包含數(shù)組每一維的大小2:rows,cols=size(A),將返回具有要求的A的各維大小。length()函數(shù)返回數(shù)組的最大維值8/4/20224第4頁,共68頁。2: 按照存儲方式分類:1 普通數(shù)組2 稀疏數(shù)組(sparse):為了提高數(shù)據(jù)存儲和運算的效率。 b=0 0 0 0 0 0

3、;0 0 0 1 5 0b = 0 0 0 0 0 0 0 0 0 1 5 0 c=sparse(b)c = (2,4) 1 (2,5) 58/4/20225第5頁,共68頁。3.2 創(chuàng)建數(shù)組(一):一維數(shù)組的創(chuàng)建1:遞增/遞減一維數(shù)組的創(chuàng)建數(shù)組的特點:數(shù)組元素值的大小按照遞增或遞減的次序排列;數(shù)組元素值之間的差是確定的,即“等步長”的。用途:主要用作函數(shù)的自變量和for循環(huán)中循環(huán)自變量等(1)冒號生成法x=a: inc: ba是數(shù)組第一個元素,inc為步長,可為正也可為負,當inc為負數(shù)時,必須保證ab;當inc為正數(shù)時,必須保證a 1:2:9ans = 1 3 5 7 9 1:2:10an

4、s = 1 3 5 7 9 1:10ans = 1 2 3 4 5 6 7 8 9 10 10:-3:2ans = 10 7 48/4/20228第8頁,共68頁。a=linspace(1,10,4);b=10.a;c=logspace(1,10,4);b=cans = 1 1 1 1這里可以看到對數(shù)等分和線性等分的聯(lián)系。8/4/20229第9頁,共68頁。(二):二維數(shù)組的創(chuàng)建1:通過直接輸入數(shù)值來創(chuàng)建數(shù)組:使用“;”或者另起一行表明一行的結束。例如:a=1 2;3 4 a = 1 2 3 42:通過MATLAB內置函數(shù)來創(chuàng)建具有某一特點的數(shù)組。8/4/202210第10頁,共68頁。zer

5、os(m,n)與ones(m,n):分別產生填充值為0或1的m行n列的數(shù)組。rand(m,n)與randn(m,n):分別產生取值為01之間的隨機數(shù)的數(shù)組。diag()具有多種形式,最常用的是diag(A),其中A為一數(shù)組,它將A的對角線上的元素作為向量返回;diag(V),其中V為一向量,它返回一個對角線為V的方陣。magic(m)函數(shù),它產生一個填充1到m2之間數(shù)字的數(shù)組,其組織方式使得每一行、每一列以及對角線上的元素分別加起來等于相同的數(shù)。 3.2.2 創(chuàng)建數(shù)組的函數(shù) z=zeros(2,3)z = 0 0 0 0 0 0 e=ones(3,4)e = 1 1 1 1 1 1 1 1 1

6、 1 1 1 r=rand(2,2)r = 0.8147 0.1270 0.9058 0.9134 rand(size(e)ans = 0.6324 0.5469 0.1576 0.4854 0.0975 0.9575 0.9706 0.8003 0.2785 0.9649 0.9572 0.1419 diag(r)ans = 0.8147 0.9134 diag(size(e)ans = 3 0 0 4 magic(3)ans = 8 1 6 3 5 7 4 9 28/4/202211第11頁,共68頁。1:randn:產生均值為0,方差為1的標準正態(tài)分布隨機矩陣。2:hilb(n)函數(shù):生

7、成希爾伯特矩陣。3:invhilb(n) :求n階希爾伯特矩陣的逆的函數(shù)。4:vander(V)函數(shù):生成以向量V為基礎向量的范得蒙矩陣。5: gallery(jordbloc,n,lambda):產生主對角元為lambda的n階Jordan。3.2.3 幾個特殊矩陣生成函數(shù)8/4/202212第12頁,共68頁。隨機數(shù)組生成函數(shù)1:rand(m,n):元素在0,1中均勻分布的m行n列隨機數(shù)組 au=rand(1,5)au =0.8147 0.9058 0.1270 0.9134 0.6324 y=rand(1,3000);plot(y)8/4/202213第13頁,共68頁。y=randn(

8、1,3000000);hist(y,3000)8/4/202214第14頁,共68頁。2. Ai=randint(m,n,a,b):元素取區(qū)間a,b中整數(shù)的均勻分布m行n列隨機數(shù)組 randint(2,3),randint(2,3,10),randint(2,3,-2,10)ans = 1 1 0 1 1 1ans = 1 0 0 7 2 0ans = 8 2 -2 7 10 38/4/202215第15頁,共68頁。3:AS=randsrc(3,4,-3,-1,1,3,1):在-3,-1,1,3字符集上產生(34)均布數(shù)組,隨機發(fā)生器的狀態(tài)置為1. AS=randsrc(3,4,-3,-1,

9、1,3,1)AS = 3 1 3 -1 1 3 1 3 3 -1 -3 -18/4/202216第16頁,共68頁。 a=1 2 3 4 5;vander(a)ans = 1 1 1 1 1 16 8 4 2 1 81 27 9 3 1 256 64 16 4 1 625 125 25 5 14:A = VANDER(V) returns the Vandermonde matrix whose columns are powers of the vector V, that is A(i,j) = v(i)(n-j):列向量V生成的范德蒙矩陣。8/4/202217第17頁,共68頁。4: r

10、andperm(n): 產生從1到n的正整數(shù)隨機排列 randperm(12)ans = 6 3 11 7 8 5 1 2 4 9 10 12 randperm(5)ans = 4 5 2 3 18/4/202218第18頁,共68頁。3.3 數(shù)組的操作獲取數(shù)組中的元素從數(shù)組中移除元素數(shù)組具體操作8/4/202219第19頁,共68頁。3.3.1 獲取數(shù)組中的元素可以通過索引值對數(shù)組中的元素進行尋址;其中第一個值為行索引值,第二個值為列索引值??梢酝ㄟ^元素在數(shù)組中的序號對元素進行尋址。Matlab中數(shù)組元素的存放是先列,后行。使用sub2ind(),ind2sub()函數(shù),對元素的下標和元素的

11、序號進行相互轉換Ind=sun2ind(size,i,j)row,col=ind2sub(size,ind)使用find()函數(shù)Ind=find()row,col=find()8/4/202220第20頁,共68頁。 m=magic(3)m = 8 1 6 3 5 7 4 9 2 m(2,3)ans = 7 m(6)ans = 9row,col=ind2sub(size(m),6)row = 3col = 2 ind=sub2ind(size(m),3,2)ind = 6 r,c=find(m=7)r = 2c = 3 find(m=7)ans = 88/4/202221第21頁,共68頁。冒

12、號(:)的用法:用線性存儲顯示數(shù)組所有元素:A(:)獲取數(shù)組的第i行元素:A(i,:)獲取數(shù)組的第i列元素: A(:,i)獲取數(shù)組的指定范圍內的元素:A(i:j,:)A(:,i:j)8/4/202222第22頁,共68頁。 m=magic(3)m = 8 1 6 3 5 7 4 9 2 m(2,:)ans = 3 5 7 m(:,2)ans = 1 5 9 m(:)ans = 8 3 4 1 5 9 6 7 2 m(1:2,:)ans = 8 1 6 3 5 7 m(:,2:3)ans = 1 6 5 7 9 28/4/202223第23頁,共68頁。3.3.2 從數(shù)組中移除元素 可以使用空數(shù)

13、組 的一種特殊用法來完成此項任務。 數(shù)組必須保持矩形,因此元素必須整行或整列移除。 m(2,3)=0m = 8 1 6 3 5 0 4 9 2 m(2,:)=m = 8 1 6 4 9 2 m(:,2)=m = 8 6 4 28/4/202224第24頁,共68頁。 m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 m(2,:)=m = 16 2 3 13 9 7 6 12 4 14 15 1 m(5)=m = 16 9 4 2 14 3 6 15 13 12 18/4/202225第25頁,共68頁。3.3.3數(shù)組操作算術操作 m=ma

14、gic(3)m = 8 1 6 3 5 7 4 9 2 n=3 2;4 5;5 6n = 3 2 4 5 5 6 m*nans = 58 57 64 73 58 65 a=2 3 4;1 2 3a = 2 3 4 1 2 3 b=1 2 1;2 3 4b = 1 2 1 2 3 4 a.*bans = 2 6 4 2 6 128/4/202226第26頁,共68頁。2. 邏輯運算 aa = 2 3 4 1 2 3 a3ans = 0 0 1 0 0 0 bb = 1 2 1 2 3 4 abans = 1 1 1 0 0 08/4/202227第27頁,共68頁。3. 使用庫函數(shù)sum()和m

15、ean():返回一個行向量,包括每一列的和與平均值max()和min():返回兩個行向量:每一列中的最大值或者最小值以及他們在每一列中出現(xiàn)的行號。8/4/202228第28頁,共68頁。 m=magic(3)m = 8 1 6 3 5 7 4 9 2 values rows=max(m)values = 8 9 7rows = 1 3 2 max(m)ans = 8 9 7 v,c=max(values)v = 9c = 28/4/202229第29頁,共68頁。數(shù)組的特殊操作 為了生成比較復雜的數(shù)組,或為了對已生成的數(shù)組進行修改、擴展,MATLAB提供了諸如擴充、收縮、變形、翻轉、排序等操作

16、。1. 數(shù)組的擴充和收縮廣義的講,數(shù)組可以在兩個層面上擴縮:維數(shù)擴縮:例如幾個相同的一維數(shù)組擴成二維數(shù)組等大小擴縮:在維數(shù)不變的情況下,改變某個或某些維數(shù)的大小。8/4/202230第30頁,共68頁。(1) 借助標點符號擴充數(shù)組 a=1:5;b=10:14;c=-2:2; a_b_c=a,b,c %水平鏈接a_b_c = 1 2 3 4 5 10 11 12 13 14 -2 -1 0 1 2 abc=a;b;c %垂直鏈接abc = 1 2 3 4 5 10 11 12 13 14 -2 -1 0 1 2數(shù)組的擴充和收縮8/4/202231第31頁,共68頁。(2) 借助指令repmat(

17、)擴充數(shù)組 ab=a;bab = 1 2 3 4 5 10 11 12 13 14 ab1=repmat(ab,2,2) %排成(22)的“ab塊”數(shù)組ab1 = 1 2 3 4 5 1 2 3 4 5 10 11 12 13 14 10 11 12 13 14 1 2 3 4 5 1 2 3 4 5 10 11 12 13 14 10 11 12 13 14 ab1=repmat(ab,2,1)ab1 = 1 2 3 4 5 10 11 12 13 14 1 2 3 4 5 10 11 12 13 148/4/202232第32頁,共68頁。(3) 借助空陣符收縮數(shù)組 ab=a;bab =

18、1 2 3 4 5 10 11 12 13 14 ab(:,1 3)=ab = 2 4 5 11 13 148/4/202233第33頁,共68頁。數(shù)組重排reshape(A):將數(shù)組A按照另外一種維數(shù)進行展示。要求重新排列的維數(shù)的乘積必須與A的維數(shù)乘積相等。 a=magic(4)a = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 b=reshape(a,2,8)b = 16 9 2 7 3 6 13 12 5 4 11 14 10 15 8 1 c=reshape(a,3,8)? Error using = reshapeTo RESHAPE the num

19、ber of elements must not change.8/4/202234第34頁,共68頁。 a=1:24; A=reshape(a,2,4,3) %把向量a重新變成“2行4列3頁”的三維數(shù)組%三維數(shù)組的顯示形式分頁顯示A(:,:,1) = 1 3 5 7 2 4 6 8A(:,:,2) = 9 11 13 15 10 12 14 16A(:,:,3) = 17 19 21 23 18 20 22 248/4/202235第35頁,共68頁。數(shù)組的上下、左右及對角翻轉 B=reshape(a,4,6)B = 1 5 9 13 17 21 2 6 10 14 18 22 3 7 11

20、 15 19 23 4 8 12 16 20 24 c=flipud(B)c = 4 8 12 16 20 24 3 7 11 15 19 23 2 6 10 14 18 22 1 5 9 13 17 21 d=fliplr(B)d = 21 17 13 9 5 1 22 18 14 10 6 2 23 19 15 11 7 3 24 20 16 12 8 4 c1=flipdim(B,1) %相當于flipudc1 = 4 8 12 16 20 24 3 7 11 15 19 23 2 6 10 14 18 22 1 5 9 13 17 21 d1=flipdim(B,2) %相當于flip

21、lrd1 = 21 17 13 9 5 1 22 18 14 10 6 2 23 19 15 11 7 3 24 20 16 12 8 4flipdim()翻轉的通用指令8/4/202236第36頁,共68頁。繞數(shù)組元素的旋轉 B90=rot90(B) %以B矩陣第(1,1)元素使整個數(shù)組逆時針旋轉90B90 = 21 22 23 24 17 18 19 20 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 B180=rot90(B,2) %以B矩陣第(1,1)元素使整個數(shù)組逆時針旋轉90兩次B180 = 24 20 16 12 8 4 23 19 15 11 7

22、 3 22 18 14 10 6 2 21 17 13 9 5 18/4/202237第37頁,共68頁。數(shù)組的行、列平移 Bd=circshift(B,2,0)Bd = 3 7 11 15 19 23 4 8 12 16 20 24 1 5 9 13 17 21 2 6 10 14 18 22 Bd=circshift(B,2)Bd = 3 7 11 15 19 23 4 8 12 16 20 24 1 5 9 13 17 21 2 6 10 14 18 22 Bl=circshift(B,0,-1)Bl = 5 9 13 17 21 1 6 10 14 18 22 2 7 11 15 19

23、 23 3 8 12 16 20 24 4 Bl=circshift(B,0,1)Bl = 21 1 5 9 13 17 22 2 6 10 14 18 23 3 7 11 15 19 24 4 8 12 16 20circshift(A,shifsize):將數(shù)組的元素按照shifsize進行按行、列進行平移。8/4/202238第38頁,共68頁。 aa = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 d(:,2)=a(:,4)d = 0 13 0 8 0 12 0 1數(shù)組切片:將數(shù)組中的一部分移入另一數(shù)組中8/4/202239第39頁,共68頁。線性化數(shù)

24、組存儲數(shù)組的內存塊是順序存放的,數(shù)組按照列的順序存放在內存中。find():返回滿足條件的值所在數(shù)組中的位置 a=2 3 4 5;4 7 8 9;12 34 5 6a = 2 3 4 5 4 7 8 9 12 34 5 6 ix=find(a7)ix = 3 6 8 11 a(ix)=a(ix)+100a = 2 3 4 5 4 7 108 109 112 134 5 68/4/202240第40頁,共68頁。數(shù)組操作實例:腳本文件8/4/202241第41頁,共68頁。3.4 應用實例-計算土壤體積問題:估計為一座建筑準備地基所需要移走泥土的數(shù)量。 Step1:測量待修建筑物的地面,得到一個

25、矩形的方格點,每一個方格點上定義了該點的高度 。Step2:考慮建筑地基的建筑圖 。其中陰影區(qū)域是為了建造建筑地基而必須將泥土移走的地方。從建筑圖中可以估計出每一個測量的方塊中必須被移走泥土的比例(對于這個實例來說,它是一個介于01之間的數(shù))。Step3:需要被移走的泥土的總量就等于每一小方塊的深度與該方塊中需要移除面積的乘積之和。腳本文件8/4/202242第42頁,共68頁。地形測量 陰影區(qū)域8/4/202243第43頁,共68頁。3.5 MATLAB向量向量是對相似數(shù)據(jù)項的集合進行分組的最簡單方式,向量是數(shù)據(jù)的一維分組。元素:向量中單個的數(shù)據(jù)項通常稱為元素(element)。元素屬性:數(shù)

26、值及在向量中的位置。2334245值索引1 2 n-1 n8/4/202244第44頁,共68頁。3.5.1 創(chuàng)建向量創(chuàng)建向量有兩種方法:使用一系列常值來創(chuàng)建向量。(1)直接輸入數(shù)值 a=3 34 56 78a = 3 34 56 78 a=3, 34, 56, 78a = 3 34 56 78 逗號可有可無8/4/202245第45頁,共68頁。(2)使用冒號:起始值:增量:結束值 b=2:4:30b = 2 6 10 14 18 22 26 30當增量為1時,冒號可以省略 c=2:10c = 2 3 4 5 6 7 8 9 108/4/202246第46頁,共68頁。(3)使用linspa

27、ce()函數(shù):可以創(chuàng)建取值位于兩個數(shù)之間且具有指定長度的向量。例如:linspace(下界,上界,數(shù)值的個數(shù))步長= linspace(0,100,11)ans =0 10 20 30 40 50 60 70 80 90 1008/4/202247第47頁,共68頁。(4)使用zeros(1,n),ones(1,n),rand(1,n),randn(1,n)等函數(shù). d=23d = 23 e=ones(1,4)e = 1 1 1 18/4/202248第48頁,共68頁。2.通過對已有的向量進行操作產生新的向量。 ee = 1 1 1 1 e.*2ans = 2 2 2 2 f=ones(4,

28、1)f = 1 1 1 1 e*fans = 48/4/202249第49頁,共68頁。3.5.2 向量尺寸向量有一個專門的屬性:向量的長度。在多數(shù)情況下,該長度在向量創(chuàng)建時就已固定。MATLAB能夠通過插入或刪除元素來增加或減小向量的長度。 函數(shù)size(V):返回包含向量行數(shù)和列數(shù)的一個向量。函數(shù)length(V)返回數(shù)組大小中的最大值 對于向量,該數(shù)值即為其長度。8/4/202250第50頁,共68頁。 e=ones(1,4)e = 1 1 1 1 size(e)ans = 1 4 length(e)ans = 48/4/202251第51頁,共68頁。3.5.3 向量索引向量中的每個元

29、素具有兩個屬性:元素的值及在向量中的位置。可以通過索引獲取數(shù)組中的元素。數(shù)值索引 a=rand(1,5)a = 0.8147 0.9058 0.1270 0.9134 0.6324 a(3)ans = 0.12708/4/202252第52頁,共68頁。MATLAB允許向超出向量范圍的位置寫入元素: b=randn(1,3)b = -0.4326 -1.6656 0.1253 b(5)=90b = -0.4326 -1.6656 0.1253 0 90.0000向量當前元素與試圖寫入的新元素之間缺失元素,用0補充8/4/202253第53頁,共68頁。(2) 邏輯索引 注意:命令窗口中顯示的邏

30、輯變量值是用1代表真,用0代表假。用邏輯向量進行索引時,結果中將包含向量中對應邏輯索引向量中取值為真的位置上的元素。 bb = -0.4326 -1.6656 0.1253 0 90.0000 mask=true false false false truemask = 1 0 0 0 1 b(mask)ans = -0.4326 90.00008/4/202254第54頁,共68頁。3.5.4 縮短向量 bb = -0.4326 -1.6656 0.1253 0 90.0000 b(4)=b = -0.4326 -1.6656 0.1253 90.0000注意:實際中很少將縮短向量作為對問題

31、的正確求解方法,而且這樣做可能會導致邏輯混亂。有可能的話,要使用索引來對需要保留的元素進行復制。8/4/202255第55頁,共68頁。3.5.5 向量操作MATLAB語言的本質核心在于具有豐富的數(shù)組和向量操作工具。向量有以下幾種操作:(1)算術操作(2)邏輯操作(3)使用庫函數(shù)(4)連接。(5)切片(廣義索引)。從對標量的操作推廣而來8/4/202256第56頁,共68頁。算術操作前提:兩個向量長度相同或者其中一個是標量,則算術操作可以執(zhí)行。向量的算術操作不同于矩陣,因此需要用新的符號:.*符號:逐個元素相乘./符號:逐個元素相除. 符號:逐個元素進行指數(shù)運算8/4/202257第57頁,共

32、68頁。 a=1:5a = 1 2 3 4 5 a+8ans = 9 10 11 12 13 a.*3ans = 3 6 9 12 15 a./2ans = 0.5000 1.0000 1.5000 2.0000 2.5000 a.*(a+3)ans = 4 10 18 28 408/4/202258第58頁,共68頁。2. 邏輯操作 兩個向量的長度相同或者其中一個是標量,可以在兩個向量上執(zhí)行逐個元素的邏輯操作。結果是與原始向量具有相同長度的且取邏輯值的向量。例:8/4/202259第59頁,共68頁。 a=1 3 4 89 23 45a = 1 3 4 89 23 45 b=linspace

33、(1,11,6)b = 1 3 5 7 9 11 a=bans = 1 1 0 1 1 1 c=1:3c = 1 2 3 ac? Error using = gtMatrix dimensions must agree.8/4/202260第60頁,共68頁。find()函數(shù): bb = 1 3 5 7 9 11 find(b5)ans = 4 5 6find()函數(shù)返回邏輯數(shù)組中取真值的元素所對應位置的向量。8/4/202261第61頁,共68頁。3. 應用庫函數(shù)(1)sum(V)與mean(V):返回向量V的元素和與平均值。 bb = 1 3 5 7 9 11 sumb=sum(b)sumb = 36 mean_b=mean(b)mean_b = 68/4/202262第62頁,共68頁。(2)min(V)與max(V):返回兩個量,向量中的最大值和最小值以及該值在向量中出現(xiàn)的位置。b=1 3 5 7 9 11 max(b)ans = 11 value where=max(b)value = 11where = 68/4/202263第63頁,共68頁。(3):取整函數(shù):round(V),ceil(V),floor(V),fix(V) A=2.3,3.6,2.0,23,99,10.001A = 2.3000 3.6000 2.0000 23.0000 9

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論