




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1.3程序設(shè)計,命名規(guī)則,給變量(包括函數(shù))命名時應(yīng)該遵循以下規(guī)則: (1) 必須以字母開頭 (2) 可由字母、數(shù)字、下劃線混合 (3)變量名和函數(shù)名字符長度不超過31個字符,如果變量前31個字符相等而后面字符不同,則作為同一變量處理,變量定義:局部變量和全局變量,變量并不都需要顯示的申明 局部變量在程序中可以定義變量。每個函數(shù)體內(nèi)部也可以定義自己的變量,這些變量如果不用global聲明,則不能從其他函數(shù)和MATLAB工作空間中訪問這些變量,這樣的變量就是局部變量。,全局變量如果要使得其他函數(shù)和MATLAB工作空間使用這些變量,則定義為全局變量,用“global”聲明。 全局變量需要在函數(shù)體對
2、變量的賦值語句前說明,整個函數(shù)以及所有對函數(shù)的遞歸調(diào)用都可以利用全局變量。 變量命名建議: 變量名盡量反映其含義,如汽車數(shù)量用numcar, num_car捕魚收入用incomefish,income_fish。 局部變量名盡量采用小寫全局變量名盡量大寫,基本語句,賦值語句是Matlab中的基本語句。其結(jié)構(gòu)為: (1)變量名列表表達式 例子: a=rand(2,5); a(1,2)=10*rand,clear all a=rand(3,5) a = 0.6038 0.0153 0.9318 0.8462 0.6721 0.2722 0.7468 0.4660 0.5252 0.8381 0.1
3、988 0.4451 0.4186 0.2026 0.0196 b(:,2 5)=a(:,1 2) b = 0 0.6038 0 0 0.0153 0 0.2722 0 0 0.7468 0 0.1988 0 0 0.4451,(2)另外一個語句可以只有表達式,而沒有變量名列表和等號=,這樣該語句的結(jié)果將自動賦值給MATLAB內(nèi)部變量“ans”。 例子: rand(1,5) ans = 0.8216 0.6449 0.8180 0.6602 0.3420 m=rand(1,5) %對照 m = 0.9501 0.2311 0.6068 0.4860 0.8913,分支判斷語句,if分支判斷語句
4、 其通用格式: IF expression statements ELSEIF expression statements ELSE statements END,比較操作符,邏輯操作符,grade=yesinput(請輸入你的成績,0, 0 100); if grade=90 sprintf(成績優(yōu)異) elseif grade=80 grade=fix(grade/10) switch grade case 9,10, sprintf(成績優(yōu)異) case 8, sprintf(成績優(yōu)秀) case 6,7, sprintf(成績一般) otherwise, sprintf(還沒有及格)
5、end,i=4 switch sqrt(i) case 1, sprintf(sqrt(i) equal to 1) case 2, sprintf(sqrt(i) equal to 2) otherwise sprintf(I am not 1 or 2) end,%腳本程序文件名fileswitch.m,fileswitch i = 4 ans = sqrt(i) equal to 2,命令行執(zhí)行結(jié)果:,循環(huán)語句,FOR語句 通用格式: FOR variable = expr, statement, ., statement END 例子:構(gòu)造一個5行4列的矩陣,并賦值 for i=1:5
6、 for j=1:4 m(i,j)=i*100+j; end end,循環(huán)語句與程序優(yōu)化,EX1: N=10; for i=1:N, for j=1:N, a(i,j)=i*100+j; end end,EX2:,tmp=1:N; for i=1:N, a(i,:)=tmp+i*100; end,WHILE語句 通用格式: WHILE expression statements END,例子:將輸入的字符串反序,str=input(請輸入字符串: ,s) tmpstr=str; i=1; len=length(str); while i=len str(len-i+1)=tmpstr(i);
7、i=i+1; end,Matlab程序M文件,Matlab程序一般保存為擴展名為m的文件,這類文件分為兩類: (1)腳本 (2)函數(shù),文本文件格式,可以用記事本、Medit、UltraEdit等軟件編輯。,注意:文本文件格式,腳本 (1)在Matlab中即不接受輸入?yún)?shù),也不返回參數(shù)的M文件稱為腳本,這類文件中沒有函數(shù)申明,它是一些MATLAB函數(shù)和命令的組合。 (2)腳本可以直接在MATLAB環(huán)境下執(zhí)行,它可以訪問整個MATLAB工作空間種的變量,而腳本中的變量在腳本執(zhí)行完后仍然保留在工作空間中,并能被其它腳本所引用,直到用clear命令清空。,例子1:腳本文件mypro1.m:,num=i
8、nput(輸入一個正整數(shù):) s=0; for i=1:num, s=s+i; end s,本腳本功能是輸入一個正整數(shù),賦值給num,然后計算1到該正整數(shù)的所有整數(shù)的和,并將結(jié)果保存到變量s中。,%Temp1.m t1=1 3 5 7,%Temp2.m t2=t1 t2=2*t1,clear all who temp1 t1 = 1 3 5 7 temp2 t2 = 1 3 5 7 t2 = 2 6 10 14,例子2:看如下兩個文件,及調(diào)用命令,temp2.m,temp1.m,注意: Matlab工作空間中的變量要被函數(shù)所引用,必須申明為全局變量 ,且全局必須在使用前就要申明, global
9、語法為: global varname1 varname2 示例如下:,%文件:temp1.m global t1 t1=1 3 5 7 %文件:testfun.m function r=testfun(num) global t1 r=t1*num,運行: clear all temp1 t1 = 1 3 5 7 testfun(2) r = 2 6 10 14 ans = 2 6 10 14,函數(shù)與子函數(shù),函數(shù)語法結(jié)構(gòu) 函數(shù)同其它高級語言一樣,是MATLAB語言的重要組成部分,MATLAB除了內(nèi)部函數(shù)外,還有各種工具箱中的函數(shù),這些函數(shù)都以M文件給出,以便調(diào)用。 下面以一個例子來說明MAT
10、LAB函數(shù)的語法。下面是文件名為mean.m的內(nèi)容。,function y = mean(x,dim) %MEAN Average or mean value. if nargin=1, % Determine which dimension SUM will use dim = min(find(size(x)=1); if isempty(dim), dim = 1; end y = sum(x)/size(x,dim); else y = sum(x,dim)/size(x,dim); end,函數(shù)語法為:,function 返回參數(shù)列表函數(shù)名(輸入?yún)?shù)列表) 例如:mean的返回參數(shù)為
11、y,y可以用中括號括起來。 輸入?yún)?shù)為x和dim, nargin和nargout為MATLAB的內(nèi)部變量,分別表示輸入?yún)?shù)個數(shù)和輸出參數(shù)個數(shù),由于有些函數(shù)要進行參數(shù)個數(shù)檢查或在一些函數(shù)實現(xiàn)時參數(shù)個數(shù)不確定,因此要借助這兩個變量進行程序算法設(shè)計和控制。 百分號%用于注釋,%后的字符串表示注釋文本,函數(shù)編寫示例,例子:求任意兩個自然數(shù)之間(包含兩個自然數(shù))所有自然數(shù)的和。 說明: 輸入?yún)?shù)2個,輸出參數(shù)1個,即返回求和結(jié)果。 函數(shù)名這里取為sum2,函數(shù)名要有一定意義,才便于記憶,而且不要與系統(tǒng)內(nèi)部函數(shù)相同??梢酝ㄟ^“help 函數(shù)名”看出該函數(shù)是否為系統(tǒng)函數(shù)。,function r=sum2(n
12、1,n2)%sum2.m 求任意自然數(shù)n1和n2之間(含n1和n2)所有整數(shù)的和 if n2=n1 , r =(n2-n1+1)*(n1+n2)/2; else r=(n1-n2+1)*(n1+n2)/2; end,輸入: sum2(1,100) ans = 5050,函數(shù)的參數(shù)的傳遞規(guī)則,函數(shù)內(nèi)部變量與MATLAB工作空間的聯(lián)系只通過輸入?yún)?shù)與輸出參數(shù)來建立。 參數(shù)的傳遞屬于值傳遞,即輸入?yún)?shù)變量的值在函數(shù)內(nèi)部改變了,而在調(diào)用該函數(shù)時沒有作為返回參數(shù),那么這個輸入?yún)?shù)變量的并沒有改變。,子函數(shù),函數(shù)文件可以包含一個以上的函數(shù),該文件中的第一個函數(shù)時主函數(shù),后面定義的所有函數(shù)都是子函數(shù)。 子函
13、數(shù)只允許同一個文件中的函數(shù)及其它函數(shù)訪問。函數(shù)文件名要與主函數(shù)名相同。 舉例: myfun.m 文件如下:,function s=myfun %文件名myfun.m num=input(輸入一個正整數(shù):) sprintf(從1到整數(shù)%d的和為%d,num,mysum(num) function s=mysum(num) %求1到num所有整數(shù)相加之和 s=0; for i=1:num, s=s+i; end,函數(shù)編寫技巧 建立內(nèi)部函數(shù),inline 語法: inline(expr) 根據(jù)expr建立內(nèi)部函數(shù),函數(shù)自變量根據(jù)表達式自動搜索; inline(expr, arg1, arg2, .) 指定參數(shù),arg1等參數(shù)是字符串參數(shù) inline(expr, N) 參數(shù)為 x,P1,P2,PN為,例子:g = inline(t2) f = inline(xyz,x,y,z) g = inline(xP1+xP2,2),f = inline(x2+y3) f = Inline function: f(x,y) = x2+y3 f(3,1) ans = 10,g = inline(sin(2*pi*
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 全GFRP筋增強混凝土梁柱節(jié)點抗震性能研究
- 我們愛運動健康教案中班
- 醫(yī)學(xué)超聲診斷技術(shù)概述
- 春季骨科常見病例分析與防治指南
- 頜骨骨折護理課件
- 頸肩腰腿痛護理課件
- 割皮術(shù)后水腫護理
- 領(lǐng)導(dǎo)安全講堂課件
- 顱腦手術(shù)術(shù)后護理課件
- 2025年貴州省中考道德與法治試卷(含解析)
- 2024年安徽省合肥市北城片區(qū)七年級數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 2025至2030中國銅冶煉行業(yè)發(fā)展現(xiàn)狀及應(yīng)用需求現(xiàn)狀分析報告
- 農(nóng)業(yè)保險培訓(xùn)課件
- 茶園租賃合同(含茶葉加工銷售)
- 2025至2030全球及中國浮式液化天然氣行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 藥品連鎖總部管理制度
- 2025至2030中國家用清潔工具行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 20250617國金證券機器人行業(yè)研究垂直領(lǐng)域具身智能機器人的野望416mb
- 數(shù)字時代親屬關(guān)系重構(gòu)-洞察及研究
- 物理●湖北卷丨2024年湖北省普通高中學(xué)業(yè)水平選擇性考試物理試卷及答案
- 一諾LZYN質(zhì)量流量計使用說明書-2009版
評論
0/150
提交評論