matlab數值數組及向量化運算_第1頁
matlab數值數組及向量化運算_第2頁
matlab數值數組及向量化運算_第3頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第2章數值數組及向量化運算數值數組(Numeric Array )和數組運算(Array Operations )始終是MATLAB勺核心內 容。本章教學內容:數組浮點算法的特點;一、二維數值數組的創建和尋訪;常用標準數組 生成函數和數組構作技法;數組運算和向量化編程;實現數組運算的基本函數;關系和邏輯 操作。2.1數值計算的特點和地位2X【例 2.1-1 】已知 f(t)二t cost,求 s(x) f(t)dt。(1)符號計算解法syms t x %定義符號變量ft=tA2*cos(t)sx=i nt(ft,t,0,x)ft =tA2*cos(t)sx =xA2*s in (x)-2*si

2、 n(x)+2*x*cos(x)(2)數值計算解法取一些離散點梯形法求定積分表示最后一個元素的最后5個元素dt=0.05;t=0:dt:5;%Ft=t.A2.*cos(t); Sx=dt*cumtrapz(Ft); % t(en d-4:e nd)%e ndSx(e nd-4:e nd)%Sxplot(t,Sx,'.k','MarkerSize',12) xlabel('x'),ylabel('Sx'),grid onans =4.8000 4.8500 4.90004.9500 5.0000ans =-20.1144 -19.9

3、833 -19.7907 -19.5345 -19.2131圖2.1-1 在區間0, 5采樣點上算得的定積分值sin(t)4【例 2.1-2 】已知 f (t) = e ,求 s(x) = f0 f(t) dt。本例演示:被積函數沒有“封閉解析表達式”,符號計算無法解題!(1) 符號計算解法syms t xft=exp(-si n(t)sx=i nt(ft,t,0,4)ft =exp(-si n( t)Warning: Explicit in tegral could not be found.> In sym.i nt at 58sx =in t(exp(-si n( t),t = 0

4、 . 4)(2) 數值計算解法dt=0.05;t=0:dt:4;Ft=exp(-si n( t);Sx=dt*cumtrapz(Ft);Sx(e nd)plot(t,Ft,'*r','MarkerSize',4)hold onplot(t,Sx,'.k','MarkerSize',15)hold offxlabel('x')lege nd('Ft','Sx')ans =3.0632圖2.1-2 在區間0, 4中間的被積函數及其原函數的離散計算結果小結:(1)符號計算長處一一可以對包含

5、變量字符、參數字符和數字的表達式進行推理、運算,并給出符號結 果,與高等數學中的解析式比較接近;符號計算的短處一一很多問題無解或求解時間過長(2)數值計算在確定一組自變量采樣點基礎上,執行數值計算的表達式在已知的數值點上進行計算。它適 用范圍比符號計算廣,以有限的精度表現有限時間和范圍內的函數關系。2.2 數值數組的創建和尋訪MATLA把數組看作存儲和運算的基本單元,而標量數據看作(1X1)的數組2.2.1 一維數組的創建1. 遞增/減型一維數組的創建數組元素值的大小按遞增或遞減的次序排列,數組元素之間的“差”是“確定的”, 即“等步長”。( 1 )“冒號”生成法x=a : inc : b ;

6、 a數組的第一個元素;inc步長,默認值為1;最后一個元素小于等于 b( 2)線性(或對數)定點法x=linspace(a, b, n);產生線性等間隔(1X n)行數組,等價于 x=a : (b-a)/(n-1) : b ; x=logspace(a, b, n;產生對數等間隔(1X n)行數組,n維數組的長度。(線性等分向量)linspace=linear spacelinea線性的 space間隔2. 通用型一維數組的創建利用函數生成特殊形式數組。【例 2.2-1 】一維數組的常用創建方法舉例。a1=1:6a2=0:pi/4:pia3=1:-0.1:0a1 =1 2 3 4 5 6a2

7、=0 0.7854 1.5708 2.3562 3.1416a3 =Columns 1 through 61.0000 0.9000 0.8000 0.7000 0.6000 0.5000Columns 7 through 110.4000 0.3000 0.2000 0.1000 0b1=linspace(0,pi,4)b2=logspace(0,3,4)b1 =0 1.0472 2.0944 3.1416c1=2 pi/2 sqrt(3) 3+5i cl =1.7321Columns 1 through 32.00001.5708Colu mn 43.0000 + 5.0000i ran

8、d('state',0)c2=rand(1,5)%均勻隨機數組c2 =0.95010.23110.6068 0.4860 0.8913二維數組的創建1小規模數組的直接輸入法【例2.2-2】在MATLAB境下,用下面三條指令創建二維數組C。a=2.7358; b=33/79;C=1,2*a+i*b,b*sqrt(a);si n(pi/4),a+5*b,3.5+iC1.00000.70715.4716 + 0.4177i 0.69094.82443.5000 + 1.0000i數組的三個要素:括號;逗號或空格;分號或回車鍵。2. 中規模數組的數組編輯器創建法【例2.2-3】根據現有

9、數據創建一個(3 8)的數組。圖2.2-1利用數組編輯器創建中規模數組3. 中規模數組的M文件創建法【例2.2-4】創建和保存數組 AM的MyMatrix.m 文件。(1) 打開文件編輯調試器,并在空白填寫框中輸入所需數組(見圖2.2-2 )。(2) 在文件的首行,編寫文件名和簡短說明,以便查閱(見圖2.2-2 )。(3) 保存此文件,并且文件起名為MyMatrix.m 。(4) 以后只要在 MATLAB指令窗中,運行 MyMatrix.m 文件,數組AM就會自動生成于 MATLAB內存中。3 Editor - D: MAT1AR7workMyMaLr i it. m匚回區Eile Edit

10、Text £上口 TqqLs Debus Desktop fflindow Help ca; K電葩sc 導 M fT檔想 因退3iack1234%AM=g01? 102,103, 104,105,106f 1Q7,108, 109:. 201,202,203, 204,205. 206, 207, 208, 209 b. 301, 302, 303, 304?305,306, 307,308, 309.田 mean4Creation and preservation of matrix AMacriplLn I Cai 11圖2.2-2 利用M文件創建數組4. 利用MATLA函數創

11、建數組【例2.2-5】標準數組產生的演示。ones(2,4)%產生全1元素數組zeros 產生全0元素數組ans =1 1111 111randn('state',0)%產生正態分布隨機數組;rand 產生均勻分布隨機數組randn (2,3)ans =-0.43260.1253 -1.1465-1.66560.28771.1909D=eye(3)%產生單位數組D =100010001diag(D)%產生對角數組ans =111diag(diag(D)ans =100010001ran dsrc(3,20,-3,-1,1,3,1)%在指定字符集生成均勻隨機 數組;random

12、生成各種分布隨機 數組ans =Colu mns 1 through 10313 -1-33 -3 -3 -131 313-1111113 -1-3-11-13-1-11Columns11 through 20-1 -1-311-33-1131 13-1-1-3-1-11-31-1-33-1-13-13 3二維數組元素的標識和尋訪例 2.2-6 】本例演示:數組元素及子數組的各種標識和尋訪格式;冒號的使用; end 的作用。A=zeros(2,6)A(:)=1:12A =1 3 5 7 9 112 4 6 8 10 12A(2,4)A(8)ans =8ans =8A(:,1,3)A(1,2,5

13、,6') ans =1 52 6 ans =1256A(:,4:end) ans =7 9 118 10 12A(2,1:2:5)=-1,-3,-5A =-14-38-512B=A(1,2,2,2,1,3,5)B =159-1-3-5-1-3-5-1-3-5L=A<3A(L)=NaNL =100 000101 010A =NaN35 79 11NaN4NaN8NaN 12格式使用說明全下標法A(r,c)A的r行c列上兀素A(r,:)A的r行全部列兀素A(:,c)A的c列全部行兀素單下標法A(:)“單下標全元素”,由 A的各列按自左到右次序,首尾相連生成的“一維”數組A(s)&qu

14、ot;單下標”尋訪,生成 s指定的“一維”數組,s行數組(列數組),則 A ( s) 就是長度相同的行數組(列數組)邏輯標識 法A(L)“邏輯1”尋訪,由與A冋樣大小的“邏輯數組”L中的“ 1 ”兀素選出A的對應丿元糸數組構作技法綜合【例2.2-7】數組操作函數 reshape, diag, repmat的用法;空陣 刪除子數組的用法a=1:8A=reshape(a,4,2)%在總元素不變的前提下,改變數組的行數或列數A=reshape(A,2,4)a =12345678A =1 52 63 74 8b=diag(A) B=diag(b) b =14B =1 0 0 4D1=repmat(B,

15、2,4)%按指定的行數 2、列數 4,把 B 作為模塊鋪放形成更大維數的數組D1 =10101010040404041010101004040404D1(1,3,: ) D1 =0404040404040404【例 2.2-8 】函數 flipud, fliplr, rot90 對數組的操作體現著“矩陣變換”。 A=reshape(1:9,3,3)A =1 4 72 5 83 6 9B=flipud(A)%以數組“水平中線”為對稱軸,交換上下對稱位置上的數組元素B =3 6 92 5 8%以數組“垂直中線”為對稱軸,交換左右對稱位置上的數組元素%把數組逆時針旋轉 90 度1 4 7C=flip

16、lr(A)C =7 4 18 5 29 6 3D=rot90(A,2)D =9 6 38 5 22.3數組運算數組運算的由來和規則1. 數組運算規則(1) 同維數組運算A珂a ij m n , B <bj m n , C =q m nC = A.# BCj = a” # bj(2) 標量和數組運算a , B =bijmn , C =CijmnC =a.#B5 =a#bj(3) 函數的數組運算f ( *) , X = xij m nC =f(X) Cij =f(Xij) f(X)=f(Xij)mxn結 論:數組運算是對單個元素進行運算。2. 數組運算符及數組運算函數(1) 運算符+ ,.*

17、 , ./(.), .A( 乘方運算),.(表示非共軛轉置),關系、邏輯運算符。數組運算兩個數組必須同維數,矩陣還必須乘法要求的維數;矩陣左除運算是MATLAB門設計的一種運算。(2) 運算函數三角、反三角函數;雙曲、反雙曲函數;指數、對數函數(exp, sqrt, log, Iog10 );園整、求余函數(round, fix, mod, floor );模、角、虛實部( abs, angle, real, imag, conj);符號函數( sign)。數組運算和向量化編程【例2.3-1】歐姆定律:r = u,其中r,u, i分別是電阻(歐姆)、電壓(伏特)、電流(安培)。驗證i實驗:據電

18、阻兩端施加的電壓,測量電阻中流過的電流,然后據測得的電壓、電流計算平均電阻值。 (測得的電壓電流具體數據見下列程序)。(1) 非向量化程序clearvr=0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41; ir=0.028, 0.040, 0.100, 0.145, 0.118, 0.258, 0.299, 0.257, 0.308, 0.345;%L=le ngth(vr);for k=1:Lr(k)=vr(k)/ir(k);end%sr=0;for k=1:Lsr=sr+r(k);endrm=sr/Lrm =30.524

19、7(2) 向量化程序clearvr=0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41;ir=0.028, 0.040, 0.100, 0.145, 0.118, 0.258, 0.299, 0.257, 0.308, 0.345;r=vr./ir rm=mea n(r)31.7857 30.0000 30.9000 29.4483 30.6780 29.8837 30.0669 30.8171 31.493530.1739 rm =30.5247小結:(1) 采用“數組運算”(“向量化運算”)模式處理反復執行的標量運算,提高

20、程序的執行性能;(2) 采用“向量或矩陣運算”模式去執行那些傳統上靠多重循環標量運算完成的矩陣計算。【例2.3-2】用間距為0.1的水平線和垂直線均勻分割x -5,5,-2.525的矩形域,在所有水平線和垂直線交點上計算函數z =sin(xy)的值,并圖示。(1)clearx=-5:0.1:5;y=(-2.5:0.1:2.5):N=le ngth(x);M=le ngth(y);for ii=1:Mfor jj=1:NX0(ii,jj)=x(jj);Y0(ii,jj)=y(ii);Z0(ii,jj)=si n( abs(x(jj)*y(ii);endend(2)X,Y=meshgrid(x,y

21、);Z=si n(abs(X.*Y);(3) norm(Z-ZO) ans =0(4) surf(X,Y,Z) xlabel('x') ylabel('y') shad ing in terp view(190,70)圖3.3-1指定域上的二元函數圖形2.4關系操作和邏輯操作在程序流控制、邏輯推理中,需要“真”和“假”判斷。1表示“真”、0表示“假”;“數值類”MATLAB勺定:非0看作“邏輯真”;數組運算結果中的 有關操作同樣適用于關系和邏輯操作。關系操作> (大于),>=(大于等于), < (小于),<=(小于等于),=(等于)=(不

22、等于)【例2.4-1】關系運算示例。A=1:9,B=10-Ar0=(A<4)r1=(A=B)A =123456789B =987654321r0 =1110 0 0000r1 =0000 1 0000【例2.4-2】關系運算應用。t=-3*pi:pi/10:3*pi;y=si n(t)./t;tt=t+(t=O)*eps;yy=s in( tt)./tt;subplot(1,2,1),plot(t,y),axis(-9,9,-0.5,1.2), xlabel('t'),ylabel('y'),title('殘缺圖形')subplot(1,2

23、,2),plot (tt, yy),axis(-9,9,-0.5,1.2) xlabel('tt'),ylabel('yy'),title('正確圖形')Warning: Divide by zero.殘缺圖形正確圖形1ni1311'A'0.8/ -0.8/ '0.6 -0.6a 04g Q.4 -0.20.20廠0-0.2-0 27V .-0.4-0.41 1 1-505-505ttt圖2.4-1采用近似極限處理前后的圖形對照邏輯操作& (與),1 (或) , (非),xor (異或)xor的作用。【例2.4-3

24、】邏輯操作和關系操作。本例演示:邏輯、關系操作的組合;(1)邏輯、關系操作的組合A=-2,-1,0,0,1,2,3L1=(A>1)%判斷A中,哪些元素不大于 1L2=(A>0)&(A<2)%判斷A中,哪些元素大于 0且小于3A =-2-100123L1 =1 1 1 1 1 0 0 L2 =(2) xor的作用A,B=0,-1,1,0,1,-2,-3C=xor(A,B) %當A, B數組中,兩個對應元素中僅一個為 0時,給出1。否則為0。-2-100123B =0-1101-2-3C =1010000A =【例2.4-4】試繪制如圖sint的削頂半波整流波形”,削頂發生在2.4-2最下那幅子圖所示的“正弦波每個周期的60 ,120 之間。clear,t=li nspace(0,3*pi,500);y=si n( t); z1=(t<pi)|(t>2*pi).*y;w=(t>pi/3&t<2*pi/3)+(t>7*pi/3&t<8*pi/3);wn=w;z2=w*si n(pi/3)+w n.*z1;

溫馨提示

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

評論

0/150

提交評論