Matlab教學(xué)課件:第一講 MATLAB入門1_第1頁
Matlab教學(xué)課件:第一講 MATLAB入門1_第2頁
Matlab教學(xué)課件:第一講 MATLAB入門1_第3頁
Matlab教學(xué)課件:第一講 MATLAB入門1_第4頁
Matlab教學(xué)課件:第一講 MATLAB入門1_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第一講,MATLAB入門,參考書目,D.Hanselman,B.Littlefield著、張航、黃攀譯:精通MATLAB6.北京:清華大學(xué)出版社,2002 宋來忠、王志明主編:數(shù)學(xué)建模與實驗。北京:科學(xué)出版社,2005.8 其他,過去 計算機語言 現(xiàn)在 工具: 算盤計算器等 計算機 方法: 口訣公式等 程序 MATLAB語言是目前最好的科學(xué)計算語言,MATLAB作為線性系統(tǒng)的一種分析和仿真工具,是理工科大學(xué)生應(yīng)該掌握的技術(shù)工具,它作為一種編程語言和可視化工具,可(最好的)解決工程、科學(xué)計算和數(shù)學(xué)學(xué)科中許多問題。, MATLAB建立在向量、數(shù)組和矩陣的基礎(chǔ)上,使用方便,人機界面直觀,輸出結(jié)果可視

2、化。,矩陣是MATLAB的核心 字體: Times New Roman,MATLAB的進入與運行方式(兩種) 請看演示:,MATLAB入門,一、變 量 與 函 數(shù),二、數(shù) 組,三、 矩 陣,四、 MATLAB編程,五、 作 業(yè),1、變量 MATLAB中變量的命名規(guī)則是: (1)變量名必須是不含空格的單個詞; (2)變量名區(qū)分大小寫; (3)變量名最多不超過31個字符,第31個字 符之后的字符將被忽略; (4)變量名必須以字母打頭,之后可以是 任意字母、數(shù)字或下劃線,變量名中 不允許使用標(biāo)點符號.,一、變 量 與 函 數(shù),特殊變量表,2、數(shù)學(xué)運算符號及標(biāo)點符號,(1)MATLAB的每條命令后,若

3、為逗號或無標(biāo)點符號, 則顯示命令的結(jié)果;若命令后為分號,則禁止顯示結(jié)果. (2)“%” 后面所有文字為注釋. (3) “.”表示續(xù)行.,例: a=3 5 7 -3 5 32; b=1 2 3 4 5 6 c=5; a+b a+c a*c a.*b a./b a.b a.b a.c c.a,結(jié)果 b = 1 2 3 4 5 6 ans = 4 7 10 1 10 38 ans = 8 10 12 2 10 37 ans = 15 25 35 -15 25 160 ans = 3 10 21 -12 25 192 ans = 3.0000 2.5000 2.3333 -0.7500 1.0000

4、5.3333 ans = 0.3333 0.4000 0.4286 -1.3333 1.0000 0.1875 ans = 1.0e+009 * 0.0000 0.0000 0.0000 0.0000 0.0000 1.0737 ans = 243 3125 16807 -243 3125 33554432 ans = 1.0e+022 * 0.0000 0.0000 0.0000 0.0000 0.0000 2.3283,3、數(shù)學(xué)函數(shù),4、M文件 所謂M文件就是由MATLAB語言編寫的可在MATLAB語言環(huán)境下遠行的程序源代碼文件??煞譃槟_本文件和函數(shù)文件兩種,不僅可以在MATLAB的程序編

5、輯器中編寫,也可以在其他的文本編輯器中編寫,并以“.m”為擴展名加以存儲。,M文件建立方法: 1. 在Matlab中,點:File-New-M-file 2. 在編輯窗口中輸入程序內(nèi)容 3. 點:發(fā)file-save,存盤,M文 件名必須 與函數(shù)名一致。 Matlab的應(yīng)用程序也以M文件保存。,4.1 M文件腳本 腳本僅是若干命令或函數(shù)的集合,用于執(zhí)行特定的功能。例如將如下幾條語句寫在編輯器中: clear;s=0; for n=1:100 s=s+1/n/n; end s 保存為eg0_4(不要加擴展名m)然后在命令窗口執(zhí)行 eg0_4 s = 1.6350,使用編輯器可以打開和修改M文件,

6、觀察變量值,調(diào)試程序等。注意:每次修改后都要存盤。 4.2 M函數(shù) MATLAB的內(nèi)部函數(shù)是有限的,有時為了研究某一個函數(shù)的各種性態(tài),需要為MATLAB定義新函數(shù),為此必須編寫函數(shù)文件. 函數(shù)文件是文件名后綴為M的文件,這類文件的第一行必須是一特殊字符function開始,格式為: function 因變量名=函數(shù)名(自變量名) 語句; 函數(shù)值的獲得必須通過具體的運算實現(xiàn),并賦給因變量.,例:定義函數(shù) f(x1,x2)=100(x2-x12)2+(1-x1)2,function f=fun(x) f=100*(x(2)-x(1)2)2+(1-x(1)2,1.建立M文件:fun.m,2. 可以直

7、接使用函數(shù)fun.m,例如:計算 f(1,2), 只需在Matlab命令窗口鍵入命令: x=1 2 fun(x),x=logspace(first,last,n) 創(chuàng)建從開始,到結(jié)束,有n個元素的對數(shù)分隔行向量.,x=a b c d e f 創(chuàng)建包含指定元素的行向量,x=first:last 創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量,x=first:increment:last 創(chuàng)建從first開始,加increment計數(shù),last結(jié)束的行向量,x=linspace(first,last,n) 創(chuàng)建從first開始,到last結(jié)束,有n個元素的行向量,例: x=1 2 3 4

8、5 8 7 18 y=1:7 z=3:2:9 v=y z u=linspace(2,9,11),結(jié)果: x = 1 2 3 4 5 8 7 18 y = 1 2 3 4 5 6 7 z = 3 5 7 9 v = 1 2 3 4 5 6 7 3 5 7 9,u = Columns 1 through 9 2.0000 2.7000 3.4000 4.1000 4.8000 5.5000 6.2000 6.9000 7.6000 Columns 10 through 11 8.3000 9.0000,2、 數(shù)組元素的訪問,(3)直接使用元素編址序號. x(a b c d) 表示提取數(shù)組x的第a、

9、b、c、d個元素構(gòu)成一個新的數(shù)組 x(a) x(b) x(c) x(d).,(2)訪問一塊元素: x(a :b :c)表示訪問數(shù)組x的從第a個元素開始,以步長為b到第c個元素(但不超過c),b可以為負數(shù),b缺損時為1.,(1)訪問一個元素: x(i)表示訪問數(shù)組x的第i個元素.,例:MATLAB(shuzu2) x=1:9 y=x(2:2:8) z=x(1) x(6) x(8) 結(jié)果:,x = 1 2 3 4 5 6 7 8 9 y = 2 4 6 8 z = 1 6 8,3、數(shù)組的方向 前面例子中的數(shù)組都是一行數(shù)列,是行方向分布的. 稱之為行向量. 數(shù)組也可以是列向量,它的數(shù)組操作和運算與行

10、向量是一樣的,唯一的區(qū)別是結(jié)果以列形式顯示.,產(chǎn)生列向量有兩種方法: 直接產(chǎn)生 例 c=1;2;3;4 轉(zhuǎn)置產(chǎn)生 例 b=1 2 3 4; c=b 說明:以空格或逗號分隔的元素指定的是不同列的元素,而以分號分隔的元素指定了不同行的元素.,4、數(shù)組的運算,(1)標(biāo)量-數(shù)組運算 數(shù)組對標(biāo)量的加、減、乘、除、乘方是數(shù)組的每個元素對該標(biāo)量施加相應(yīng)的加、減、乘、除、乘方運算.,設(shè):a=a1,a2,an, c=標(biāo)量,則:a+c=a1+c,a2+c,an+c a.*c=a1*c,a2*c,an*c a./c= a1/c,a2/c,an/c(右除) a.c= c/a1,c/a2,c/an (左除) a.c=

11、a1c,a2c,anc c.a= ca1,ca2,can,例: a=1 2 3 4 c=2 a1=a+c a2=a*c a3=a./c a4=a.c a5=a.c a6=c.a,(2)數(shù)組-數(shù)組運算 當(dāng)兩個數(shù)組有相同維數(shù)時,加、減、乘、除、冪運算可按元素對元素方式進行的,不同大小或維數(shù)的數(shù)組是不能進行運算的.,設(shè):a=a1,a2,an, b=b1,b2,bn,則:a+b= a1+b1,a2+b2,an+bn a.*b= a1*b1,a2*b2,an*bn a./b= a1/b1,a2/b2,an/bn a.b=b1/a1,b2/a2,bn/an a.b=a1b1,a2b2,anbn,例: a=

12、2 2 2 b=3 3 3 c1=a+b c2=a.*b c3=a./b c4=a.b c5=a.b,三、 矩 陣,逗號或空格用于分隔某一行的元素,分號用于區(qū)分不同的行. 除了分號,在輸入矩陣時,按Enter鍵也表示開始一新行. 輸入矩陣時,嚴(yán)格要求所有行有相同的列. 例 m=1 2 3 4 ;5 6 7 8;9 10 11 12 p=1 1 1 1 2 2 2 2 3 3 3 3,1、矩陣的建立,特殊矩陣的建立:.,d=eye(m,n) 產(chǎn)生一個m行、n列的單位矩陣,c=ones(m,n) 產(chǎn)生一個m行、n列的元素 全為1的矩陣,b=zeros(m,n) 產(chǎn)生一個m行、n列的零矩陣,a= 產(chǎn)

13、生一個空矩陣,當(dāng)對一項操作無結(jié) 果時,返回空矩陣,空矩陣的大小為零.,例 : m=1 2 3 4;5 6 7 8;9 10 11 12 p=1 1 1 1 2 2 2 2 3 3 3 3 a= b=zeros(2,3) c=ones(2,3) d=eye(2,3) e=eye(3,3),2、矩陣中元素的操作,(1)矩陣A的第r行:A(r,:),(2)矩陣A的第r列:A(:,r),(4)取矩陣A的第i1i2行、第j1j2列構(gòu)成新矩陣:A(i1:i2, j1:j2),(5)以逆序提取矩陣A的第i1i2行,構(gòu)成新矩陣:A(i2:-1:i1,:),(6)以逆序提取矩陣A的第j1j2列,構(gòu)成新矩陣:A(

14、:, j2:-1:j1 ),(7)刪除A的第i1i2行,構(gòu)成新矩陣:A(i1:i2,:)= ,(8)刪除A的第j1j2列,構(gòu)成新矩陣:A(:, j1:j2)= ,(9)將矩陣A和B拼接成新矩陣:A B;A;B,(3)依次提取矩陣A的每一列,將A拉伸為一個列向量:A(:),例:MATLAB(matrix2) a=1 2 3;4 5 6;7 8 9 a1=a(2,:) a2=a(:,2) a3=a(:) a4=a(1:2,2:3) a5=a(2:-1:1,:) a6=a(:,3:-1:2) a7=a;a7(1:2,:)= a8=a;a8(:,1)= a9=a a2 a10=a;a1,(2)矩陣-矩

15、陣運算 1 元素對元素的運算,同數(shù)組-數(shù)組運算。 A.*B A.B A./B A.B ,3、矩陣的運算,(1)標(biāo)量-矩陣運算 同標(biāo)量-數(shù)組運算。,2矩陣運算: 矩陣加法:A+B 矩陣乘法:A*B 方陣的行列式:det(A) 方陣的逆:inv(A) 方陣的特征值與特征向量:V,D=eigA,例:MATLAB(matrix3)(運行看結(jié)果) a=1 2 3 4 5 6 b=1 2 1 2 1 2 c1=a+a c2=a*b c=2 7 3;3 9 4;1 5 3 c3=det(c) c4=inv(c) v,d=eig(c),四、關(guān)系與邏輯運算,1、關(guān)系操作符,2、邏輯運算符,1、for循環(huán):允許一

16、組命令以固定的和預(yù)定的次數(shù)重復(fù) for x=array commands end 在for和end語句之間的命令串commands按數(shù)組(array)中的每一列執(zhí)行一次. 在每一次迭代中,x被指定為數(shù)組的下一列,即在第n次循環(huán)中,x=array(:,n),五、控制流,MATLAB提供三種決策或控制流結(jié)構(gòu): for循環(huán)、while循環(huán)、if-else-end結(jié)構(gòu). 這些結(jié)構(gòu)經(jīng)常包含大量的MATLAB命令,故經(jīng)常出現(xiàn)在MATLAB程序中,而不是直接加在MATLAB提示符下.,例 對n=1,2,10,求xn= 的值,建立:M-文件(for1) for n=1:10 x(n)=sin(n*pi/10)

17、; end x 結(jié)果:,x = Columns 1 through 9 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 Column 10 0.0000,while expression commands end 只要在表達式(expression)里的所有元素為真,就執(zhí)行while和end語句之間的命令串commands.,2、While循環(huán) 與for循環(huán)以固定次數(shù)求一組命令相反,while循環(huán)以不定的次數(shù)求一組語句的值.,例 設(shè)銀行年利率為11.25%。將10000元錢存入銀行,問多長時間會連本帶利翻一番?,建立

18、:M-文件(while1) money=10000 years=0 while money20000 years=years+1; money=money*(1+11.25/100); end years,money 運行看結(jié)果。,3、If-else-end結(jié)構(gòu) (1)有一個選擇的一般形式是: if expression commands end 如果在表達式(expression)里的所有元素為真,就執(zhí)行if和end語句之間的命令串commands.,先建立M文件fun1.m定義函數(shù)f(x),再在Matlab命令窗口輸入fun1(2),fun1(-1)即可。,M-文件.fun1(送入工作間)

19、 function f=fun1(x) if x1 f=x2+1; end if x=1 f=2*x; end, fun1(2),fun1(-1) f = 5 ans = 5 f = -2 ans = -2,2) 有三個或更多的選擇的一般形式是: if (expression1) commands1 else if (expression2) commands2 else if (expression3) commands3 else if els commands end end end end,先建立M文件fun2.m定義函數(shù)f(x),再在Matlab命令窗口輸入fun2(2),fun2(

20、0.5), fun2(-1)即可。,M- 文件(fun2)(送入工作間),function f=fun2(x) if x1 f=x2+1; else if x=0 f=x3; else f=2*x; end end, fun2(2),fun2(0.5), fun2(-1) f = 5 ans = 5 f = 1 ans = 1 f = -1 ans = -1,編程幾點高級事項,input 提示輸入; eval 執(zhí)行命令; disp 強行顯示; feval 函數(shù)求值; num2str 數(shù)值轉(zhuǎn)字符串; keyboard 鍵盤指令; str2num 字符串轉(zhuǎn)數(shù)值; pause 延時; int2str

21、 整數(shù)轉(zhuǎn)字符串; warning 警告; mat2str 矩陣轉(zhuǎn)字符串; error 錯誤; char 按ASCII碼轉(zhuǎn)換; nargin 函數(shù)的輸入變量個數(shù); strcmp 字符串比較; nargout 輸出變量個數(shù)。,(1)注釋:注釋語句用%開頭,對本行后面的字符起作用,不參與運算,起說明作用,增加程序的可讀性,一個好的M文件開頭應(yīng)有一段注釋,說明功能和使用方法,這部分注釋使用 help文件主名 可看到。注釋符%也常用于程序調(diào)試。 (2)提示輸入:input和disp是一組輸入輸出語句,例如編寫下列腳本文件finddet.m,使對鍵盤輸入的方陣求得行列式。 %文件finddet.m cle

22、ar A; A=input(Enter a spuare matrix:); d=det(A); disp(Its determinant is,num2str(d); 這里num2str是將數(shù)轉(zhuǎn)換為字符串,這樣可與前面的字符串一起構(gòu)成字符串矩陣?,F(xiàn)在運行 finddet Enter a spuare matrix: (請你輸入方陣,如1 2;3 4),Its determinant is-2 (3)子函數(shù):M函數(shù)中允許允許使用子函數(shù)。M函數(shù)中第一個function為主函數(shù),其他function為子函數(shù)。 (4)全局變量:M文件間變量值傳遞除使用參量外還有一種方式:定義global(全局變量)

23、,它的意義與通常全局變量稍有區(qū)別,只對有定義的文件起作用。 (5)數(shù)組化編程:MATLAB是數(shù)組化程序語言,好的M文件應(yīng)盡量使用內(nèi)部函數(shù)(包括關(guān)系與邏輯函數(shù)any、all、find等,見例5),少用循環(huán)語句,以提高運算速度。如例4寫成下列形式運算較快。 %M函數(shù)eg0_4f.m的改進 function s=f(m) n=l:m; s=sum(l./n.2); %sum表示向量的和,(6)預(yù)分配:盡管MATLAB數(shù)組無須定義大小,但經(jīng)常改變數(shù)組大小會影響速度,采取一些分配方法可提高運算速度。如 較差的程序: 較好的程序: v(1)=2; v=2*ones(1,100); for i=2:100

24、for i=2:100 v(i)=v(i-1)0.5 v(i)=v(i-1)0.5 end end (7)與C/C+及FORTRAN的接口:MATLAB提供了API函數(shù)將C/C+或FORTRAN程序轉(zhuǎn)化為在MATLAB中運行的MEX文件,也可用Complier從M函數(shù)生成C/C+代碼或可執(zhí)行文件。MATLAB還可與EXCEL交換數(shù)據(jù)。,在線幫助和文件管理,在線幫助 help: 目錄、命令、函數(shù)等 lookfor 關(guān)鍵詞 文件管理 what 顯示當(dāng)前目錄中的M文件 dir 顯示當(dāng)前目錄中的所有文件 type M文主名 顯示指定的MATLAB文件路徑 which M文件主名 顯示指定的MATLAB

25、文件路徑 cd 顯示當(dāng)前子目錄 cd 子目錄名 進入子目錄 mkdir 建立子目錄 !DOS命令 執(zhí)行DOS命令,MATLAB 工作目錄,MATLAB只執(zhí)行當(dāng)前目錄和搜索路徑中的命令和函數(shù)。當(dāng)MATLAB接到一個命令首先檢查是否為命令窗口的常量或變量,然后檢查當(dāng)前工作目錄M文件名,在依次按路徑隊列搜索,排在后面的同名M文件得不到執(zhí)行。你所正在執(zhí)行的M文件的位置可用which查到,并可用type顯示文件內(nèi)容。 使用工具欄里的路徑瀏覽器(Path Brower)可查到搜索路徑隊列,也可改變當(dāng)前工作目錄或在搜索路徑中添加新目錄。,符號數(shù)學(xué)工具箱,1 、符號對象 Symbolic Object 使用sym或syms生成:如 syms a b c; %生成符號變量a,b,c A=0.1,a;b,c A = 1/10, a b, c 使用char:符號對象化為字符串,double:符號對象化為數(shù)值。,2 基礎(chǔ)符號運算函數(shù),sym (syms) 字符串或數(shù)值到符號的轉(zhuǎn)換 ; expand 展開; char 符號到字符串的轉(zhuǎn)換; collect 和并同類項; double 符號到數(shù)值的轉(zhuǎn)換; simplify,simple 化簡; digits 計算字長設(shè)置; subs 變量代換; vpa 任意精度計算; ezplot 符號函數(shù)作

溫馨提示

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

最新文檔

評論

0/150

提交評論