

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,數(shù)學(xué)軟件 Matlab,—— 編程基礎(chǔ)(腳本文件),2,本講主要內(nèi)容,M 文件 基本運(yùn)算:算術(shù)、關(guān)系、邏輯 簡(jiǎn)單的輸入輸出 控制結(jié)構(gòu):順序、選擇、循環(huán),3,Matlab 編程,Matlab 作為一種廣泛應(yīng)用于科學(xué)計(jì)算的工具軟件,不僅具有強(qiáng)大的數(shù)值計(jì)算能力和豐富的繪圖功能,同時(shí)也可以與 C、FORTRAN 等高級(jí)語(yǔ)言一樣進(jìn)行程序設(shè)計(jì) 利用 Matlab 的程序控制功能,將相關(guān) Matlab 命令編成程序存儲(chǔ)在一個(gè)文件中(M 文
2、件),然后在命令窗口中運(yùn)行該文件,Matlab 就會(huì)自動(dòng)依次執(zhí)行文件中的命令,直到全部命令執(zhí)行完畢 在 Matlab 程序設(shè)計(jì)中,要充分利用 Matlab 數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),提高編程效率,Matlab 編程,4,用 Matlab 語(yǔ)言編寫的程序稱為 M 文件 M 文件以 .m 為擴(kuò)展名 M 文件是由若干 Matlab 命令組合在一起構(gòu)成的,它可以完成某些操作,也可以實(shí)現(xiàn)某種算法,M 文件分類(根據(jù)調(diào)用方式的不同),Script:腳本
3、文件/命令文件 Function:函數(shù)文件,M 文件,M 文件介紹,5,M 文件的創(chuàng)建的與編輯,M 文件,新建一個(gè) M 文件,菜單操作 ( File ? New ? Script / Function) 命令操作 ( edit M 文件名 ) 命令按鈕 ( 快捷鍵 ),,,M 文件是文本文件,可以用任何文本編輯器來(lái)建立和編輯,通常使用 Matlab 自帶的 M 文件編輯器,6,編程示例,編程方式:新建一個(gè) M 文件,將上面的內(nèi)容輸
4、入到該文件中,然后在命令窗口中輸入該文件名,即可執(zhí)行,例:用 mesh 繪制半徑為 3 的球,命令行方式:,u=[0:pi/60:2*pi]; v=[0:pi/60:pi]; R=3; [U,V]=meshgrid(u,v);X=R*sin(V).*cos(U); Y=R*sin(V).*sin(U); Z=R*cos(V); mesh(X,Y,Z);axis equal;,注:M 文件的命名規(guī)則與變量相同!,7,在命
5、令窗口中輸入 f2c,即可執(zhí)行該 M 文件,例:編寫M文件,將華氏溫度轉(zhuǎn)化為攝氏溫度:,編程示例,clear; % 清除當(dāng)前工作空間中的所有變量f=input('Please input f:');c=5*(f-32)/9;fprintf('c=%g\n',c);,新建一個(gè)腳本文件 f2c.m,內(nèi)容如下:,腳本文件運(yùn)行所產(chǎn)生的變量都駐留在 Matlab 當(dāng)前工作空間 百分號(hào)是注釋符 M文件必須
6、在當(dāng)前工作目錄下才能運(yùn)行,8,本講主要內(nèi)容,M 文件 基本運(yùn)算:算術(shù)(略)、關(guān)系、邏輯 簡(jiǎn)單的輸入輸出 控制結(jié)構(gòu):順序、選擇、循環(huán),9,關(guān)系運(yùn)算,比較大小,如果結(jié)論是 真 則返回 1 ,否則返回 0 注意 = = 與 = 的區(qū)別,可以對(duì)兩個(gè)同樣大小的數(shù)組進(jìn)行比較運(yùn)算,即對(duì)應(yīng)分量進(jìn)行比較,結(jié)果為一個(gè)同樣大小的0-1數(shù)組 也可以對(duì)一個(gè)數(shù)組和一個(gè)標(biāo)量進(jìn)行比較運(yùn)算,此時(shí)標(biāo)量和數(shù)組中的每一個(gè)元素極限比較,結(jié)果也是一個(gè)0-1數(shù)組,關(guān)系運(yùn)算
7、:比較大小,10,例:,關(guān)系運(yùn)算舉例,2+2==4,A=[1 3 5; 2 0 6] B=[3 1 0; 2 4 6] A>=BB<4,x=pi^2<8,11,邏輯運(yùn)算,邏輯運(yùn)算,注意 &,| 與 &&,|| 的區(qū)別,例:,x=5;3<x<8 % ERROR3<x & x<8,12,邏輯運(yùn)算,在 Matlab 中,0 表示 “假”,非零表示 “真
8、”,運(yùn)算法則,13,all(x) % 邏輯與的推廣如果向量 X 中所有元素都非零,則返回 1,否則返回 0,若 x 為矩陣,則 any 和 all 按列運(yùn)算,返回一個(gè) 0-1 向量,邏輯運(yùn)算,邏輯運(yùn)算函數(shù):all、any,any(x) % 邏輯或的推廣如果向量 X 中存在非零元素,則返回 1,否則返回 0,例:,A=[61 83 58 94 75]; % 學(xué)生成績(jī)all(A>=60) % 全部及格否?any(A&g
9、t;=90) % 有沒有90分以上的?,14,一些測(cè)試函數(shù),isfinite(5)isinf(5),測(cè)試函數(shù),例:,15,運(yùn)算優(yōu)先級(jí),,高,低,16,本講主要內(nèi)容,M 文件 基本運(yùn)算:算術(shù)、關(guān)系、邏輯 簡(jiǎn)單的輸入輸出 控制結(jié)構(gòu):順序、選擇、循環(huán),17,例:,x=input('Please input x: '),數(shù)據(jù)的輸入:input,x=input(提示信息),其中 提示信息 為字符串, 該命令要求用戶輸
10、入 x 的值 (可以是數(shù)或字符串),input,name=input('What''s your name? '),例:,輸入字符串時(shí)必須帶單引號(hào) 單引號(hào)的輸出:兩個(gè)連續(xù)的單引號(hào),18,disp(x),輸出變量 x 的值,x 可以是數(shù)值矩陣或字符串 一次只能輸出一個(gè)變量的值,x=pi; B=[1 2 3; 4 5 6; 7 8 9];disp(x)disp(B),disp,數(shù)據(jù)的輸出:disp,s
11、tr='Hello, Tom!';disp(str),例:,19,fprintf,fprintf(fid, format, 變量列表),數(shù)據(jù)的格式化輸出,按指定的格式將變量的值輸出到屏幕或指定的文件中 fid 為文件句柄,若缺省,則輸出到屏幕上 format 用來(lái)指定數(shù)據(jù)輸出時(shí)采用的格式,包含: 普通字符串、格式字符串、轉(zhuǎn)義字符,,格式字符串:以 % 開頭,包括:,flags (可選) Width and
12、 precision fields (域?qū)捄途?,可選) Conversion character (格式說(shuō)明符,必須),20,fprintf 舉例,fprintf('a= %-12.5f \n', pi),,,以 % 開頭,,flag,,field width,,,precision,,,,格式說(shuō)明符,,- :左對(duì)齊+ :輸出符號(hào)0 :空白處添 0空格:前面加一空格,,字段寬度,,指
13、定小數(shù)點(diǎn)后位數(shù),,格式字符串示例,,21,fprintf,常用的格式說(shuō)明符,常用的轉(zhuǎn)義字符,22,fprintf 舉例,a='Hello'; b=2.4; c=100*pi;fprintf('a=%s, b=%f, c=%e\n',a,b,c),例:,格式字符串與輸出變量要一一對(duì)應(yīng)!,可以只輸出一個(gè)字符串,fprintf('Today is Tuesday!\n'),例:,fprintf
14、('pi=%12.5f=\n', pi)fprintf('pi=%-12.5f=\n', pi)fprintf('pi=%012.5f=\n', pi),例:,23,本講主要內(nèi)容,M 文件 基本運(yùn)算:算術(shù)、關(guān)系、邏輯 簡(jiǎn)單的輸入輸出 控制結(jié)構(gòu):順序、選擇、循環(huán),24,程序控制結(jié)構(gòu)有三種:,M文件控制流,順序結(jié)構(gòu),順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),任何復(fù)雜的程序都由這三種基本結(jié)構(gòu)組成,
15、25,選擇結(jié)構(gòu),選擇結(jié)構(gòu),選擇結(jié)構(gòu)的實(shí)現(xiàn),if 語(yǔ)句 switch 語(yǔ)句,根據(jù)給定的條件成立或不成立,分別執(zhí)行不同的語(yǔ)句,26,單分支 if 語(yǔ)句,if 條件表達(dá)式 語(yǔ)句組end,if 條件語(yǔ)句,if 條件表達(dá)式 語(yǔ)句組1else 語(yǔ)句組2end,雙分支 if 語(yǔ)句,例:,if score>=60 mark='passed';end,例:,if a>b x=a;els
16、e x=b;end,27,if 條件表達(dá)式1 語(yǔ)句組1elseif 條件表達(dá)式2 語(yǔ)句組2 ... ... elseif 條件表達(dá)式m 語(yǔ)句組melse 語(yǔ)句組end,多分支 if 語(yǔ)句,if 條件語(yǔ)句,例:計(jì)算一個(gè)數(shù)符號(hào),if x>0 sign_of_x=1;elseif x<0 sign_of_x=-1;elseif x==0 sign_of_x=0;el
17、se disp('I dont know!')end,28,根據(jù)表達(dá)式的不同取值,分別執(zhí)行不同的語(yǔ)句,switch 表達(dá)式0 case 表達(dá)式1 語(yǔ)句組1 case 表達(dá)式2 語(yǔ)句組2 ... ... case 表達(dá)式m 語(yǔ)句組m otherwise 語(yǔ)句組end,switch 語(yǔ)句,先計(jì)算表達(dá)式0的值,
18、然后將它依次與各個(gè) case 指令后表達(dá)式的值進(jìn)行比較,當(dāng)兩者一樣時(shí),就執(zhí)行相應(yīng)語(yǔ)句組,然后跳出 switch 結(jié)構(gòu) switch 后面的表達(dá)式0的值可以是一個(gè)數(shù)或字符串 otherwise 指令可以不出現(xiàn) 如果所有的比較都不匹配時(shí),執(zhí)行 otherwise 后面的語(yǔ)句組,29,switch 舉例,例:,score=input('請(qǐng)輸入你的得分(A~E):');switch score case '
19、;A' disp('90—100'); case 'B' disp('80—89'); case 'C' disp('70—79'); case 'D' disp('60—69'); otherwise disp('Sorry!');end,30
20、,循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)的實(shí)現(xiàn),for 語(yǔ)句 while 語(yǔ)句,根據(jù)給定的條件,重復(fù)執(zhí)行指定的語(yǔ)句,31,for 循環(huán)變量 = 取值列表 循環(huán)體end,取值列表 通常是一個(gè)向量 將取值列表中的值依次賦給循環(huán)變量,直到全部取完, 循環(huán)結(jié)束,for 循環(huán),不要在循環(huán)體內(nèi)改變循環(huán)變量的值 為提高代碼的運(yùn)行效率,應(yīng)盡可能提高代碼的向量化程度,for 循環(huán),32,for 循環(huán),y=0; n=100;for k=
21、1:n y=y+1/(2*k-1);end,例:,已知 ,當(dāng) n=100 時(shí),求 y 的值,例:計(jì)算 s = 1 + 3 + 10 - 28 + 30 + 50 - 12 - 8,s=0; x=[1, 3, 10, -28, 30, 50, -12,-8];for k=x % 將 x 的分量依次賦值給循環(huán)變量 s=s+k;
22、end,33,循環(huán)語(yǔ)句可以嵌套使用 如果預(yù)先知道循環(huán)的次數(shù),可采用 for 循環(huán) 如果預(yù)先無(wú)法確定循環(huán)次數(shù),則可使用 while 循環(huán),while 循環(huán),while 條件表達(dá)式 循環(huán)體語(yǔ)句end,當(dāng)條件表達(dá)式的值為真(非 0)時(shí), 執(zhí)行循環(huán)體語(yǔ)句, 直到條件表達(dá)式的值是假為止,while 循環(huán),,,,,,,,表達(dá)式,循環(huán)體語(yǔ)句,,真,假,,,,34,while 循環(huán),例:數(shù)論中的一個(gè)有趣問(wèn)題:3n+1
23、 問(wèn)題,任取一個(gè)正整數(shù),如果是偶數(shù),用 2 除,如果是奇數(shù),用 3 乘再加 1,反復(fù)這個(gè)過(guò)程,直到所得到的數(shù)為 1。問(wèn):是否存在使該過(guò)程永不中止的整數(shù)?,n=input('請(qǐng)輸入一個(gè)正整數(shù) n: ');x=n; while x>1 if mod(x,2)==0 x=x/2; else x=3*x+1; end fprintf(' x=%d \n', x);
24、end,ex4while01.m,35,這個(gè)例子給出了計(jì)算 eps 的一種方法。 這里我們用大寫 EPS,因此系統(tǒng)中 eps 的值不會(huì)被覆蓋。當(dāng) EPS=eps 時(shí),條件仍成立;而當(dāng) EPS=eps/2 時(shí),條件不成立,退出循環(huán),所以最后應(yīng)有 EPS=eps/2。k 用來(lái)記錄循環(huán)次數(shù)。,計(jì)算 Matlab 中 eps 值,while編程示例,k=0; EPS=1;while (1+EPS) > 1 EPS = E
25、PS/2; k = k+1;end,例:,ex4while02.m,36,循環(huán)的終止,循環(huán)的中斷,跳出循環(huán)體,終止循環(huán) break 只能跳出一層循環(huán),結(jié)束本輪循環(huán),執(zhí)行下一輪循環(huán),break,continue,break 和 continue 通常需要與 if 語(yǔ)句配合使用,若想強(qiáng)行終止運(yùn)行中的程序,可以使用 Ctrl+c,37,pause,pause % 暫停程序的運(yùn)行,按任意鍵后繼續(xù)pause(x) % 暫
26、停程序 x 秒,這里的 x 可以是小數(shù),pause off 屏蔽程序中所有 pause 的作用 pause on 打開 pause 的作用,程序暫停,返回/退出,退出正在運(yùn)行的腳本或函數(shù),通常用在函數(shù)文件中,return,38,首先由計(jì)算機(jī)隨機(jī)產(chǎn)生一個(gè) [1,100] 之間的一個(gè)整數(shù),然后由用戶猜測(cè)所產(chǎn)生的這個(gè)數(shù)。根據(jù)用戶猜測(cè)的情況給出不同的提示,如果猜測(cè)的數(shù)大于產(chǎn)生的數(shù),則顯示 Higher,小于則顯示 Lower,等于則顯示
27、 You won!同時(shí)退出游戲。用戶最多有 7 次機(jī)會(huì),編程示例,猜數(shù)游戲,例:,ex4for.m,39,上機(jī)作業(yè),1、已知程序:,2、已知 sin(x) 的冪級(jí)數(shù)展開公式為,試?yán)迷摴接?jì)算 sin(?/2)和 sin(31?/2) 的值(直到級(jí)數(shù)某項(xiàng)的絕對(duì)值小于 10-16 為止),并與 Matlab 自帶的 sin 函數(shù)比較,誤差分別多大?為什么?,(程序取名 m52.m),(在程序中將最后兩個(gè)值輸出來(lái),程序取名 m51.m 中
28、),試說(shuō)明程序運(yùn)行結(jié)束后,最后得到的 x 和倒數(shù)第二個(gè) x 值分別為多少?,若將程序改為下面的語(yǔ)句,結(jié)果又如何?,x=1; while (x+x>x), x=2*x; end,x=1; while (x+x>x), x=x/2; end,40,上機(jī)作業(yè),3、用 while 循環(huán)實(shí)現(xiàn)猜數(shù)游戲 (程序取名 m53.m),從鍵盤輸入一個(gè)大于 1 的整數(shù),然后求出不超過(guò)這個(gè)整數(shù)的最大素?cái)?shù)。(要求使用 for 循環(huán)和 if 語(yǔ)句
29、,可以使用 isprime 函數(shù)),5、編寫程序,實(shí)現(xiàn)下面的功能,4、編寫程序,用窮舉法找出 1~100間的所有素?cái)?shù) (程序取名 m54.m,要求使用 while 循環(huán),不能使用 isprime 函數(shù)),(程序取名 m55.m),41,上機(jī)作業(yè),學(xué)生的成績(jī)有兩種表示方法:等級(jí)制和百分制。對(duì)應(yīng)關(guān)系如下:,(a) 要求從鍵盤輸入一個(gè)分?jǐn)?shù),然后輸出其對(duì)應(yīng)的等級(jí),要求用 if 語(yǔ)句實(shí)現(xiàn),程序取名為:m56.m,請(qǐng)編寫程序,實(shí)現(xiàn)它們之間的
30、互換,即,(b) 從鍵盤輸入一個(gè)等級(jí),然后輸出其對(duì)應(yīng)的分?jǐn)?shù)區(qū)間,要求用 switch 語(yǔ)句實(shí)現(xiàn),程序取名為:m57.m,注:輸入時(shí)要有提示,如 “請(qǐng)輸入成績(jī)(百分制):”,6、按下面的要求編寫程序,42,上機(jī)要求,將所有文件作為附件,通過(guò) foxmail 以郵件形式發(fā)給 mhjs@system.mail郵件主題為:機(jī)號(hào)-學(xué)號(hào)-姓名,其中機(jī)號(hào)為 兩位數(shù)三個(gè)字段之間用英文狀態(tài)下的減號(hào)連接每個(gè) M 文件的第一行添加一條注解
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第五章action腳本基礎(chǔ)
- 第五講 matlab求解微分方程
- windows腳本編程核心技術(shù)精解-隨書示例腳本-第五章
- 第八講matlab編程入門
- 經(jīng)濟(jì)管理基礎(chǔ)-第五講
- 第五講
- 第五講程序設(shè)計(jì)語(yǔ)言和編程環(huán)境
- 第五講 合伙
- 第五講 見微知著
- 第五講 實(shí)數(shù)
- 第五講 數(shù)詞
- 黨課-第五講2
- 文學(xué)欣賞第五講
- 第五講 職業(yè)認(rèn)知
- 第二章-模糊數(shù)學(xué)基礎(chǔ)第五講
- 第一講matlab操作基礎(chǔ)
- 成本管理第五講
- 小學(xué)精品語(yǔ)文第五講
- 第五講 在線作業(yè).doc
- 第五講 算式迷宮.doc
評(píng)論
0/150
提交評(píng)論