1MATLAB編程基礎(chǔ)精簡本科生_第1頁
1MATLAB編程基礎(chǔ)精簡本科生_第2頁
1MATLAB編程基礎(chǔ)精簡本科生_第3頁
1MATLAB編程基礎(chǔ)精簡本科生_第4頁
1MATLAB編程基礎(chǔ)精簡本科生_第5頁
已閱讀5頁,還剩157頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

MATLAB教程

根底準備及入門---電氣工程系總體內(nèi)容:1、安裝、啟動〔略〕2、MATLAB指令窗口操作及規(guī)那么〔適用于各種版本〕3、MATLAB最常用的五個交互界面:歷史指令窗、當前目錄瀏覽器、工作空間瀏覽器、變量編輯器、M文件編輯器4、MATLAB的幫助體系和求助方法MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面MATLAB環(huán)境MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面MATLAB教程

根底準備及入門之窗口操作及規(guī)那么---電氣工程系

一、窗口MATLAB的命令窗口它是MATLAB的重要組成局部,MATLAB系統(tǒng)在計算機里的存在,主要是以命令窗口形式表達的。在MATLAB命令窗口里,使用者輸入命令、程序、點擊菜單項或工具欄按鈕,指揮MATLAB計算、仿真,其結(jié)果也都在命令窗口顯示。MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-1工作空間在剛翻開的MATLAB時,工作空間中只有MATLAB提供的幾個常量,如pi(3.1415926…)、虛數(shù)單位i等。運行MATLAB程序時,程序中的變量存入工作空間中。除非用命令刪除否那么變量在關(guān)閉MATLAB之前一直存在。程序運算結(jié)果以變量形式保存在工作空間中,可被別的程序繼續(xù)利用;某個時刻工作空間中的所有變量還可以存儲到一個文件中,以供不時之需。在命令窗口鍵入who和whos命令可以看到目前工作空間里的所有變量。who命令只給出變量名;whos還給出變量的大小、數(shù)據(jù)類型等內(nèi)容。命令clear可刪除工作空間里的變量。MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-2工作空間瀏覽器MATLAB/Desktop下拉菜單勾選或者在命令窗口鍵入worksPace命令.均可翻開工作空間瀏覽器。用于顯示工作空間里變量的屬性:變量名、變量數(shù)組維數(shù)、占用字節(jié)數(shù)、變量類別(單精度或雙精度)、是否復數(shù)等。另外,[Delet]按鈕可刪除選中變量,[openselection]按鈕或左鍵雙擊變量名可翻開變量編輯器(以以下圖)來查看變量的屬性或?qū)ψ兞吭剡M行修改。還可以通過[importdata]從已有的數(shù)據(jù)〔txt…〕文件中導入數(shù)據(jù)。MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-3

MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-3

MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-3

對于大型數(shù)組,使用VariableEditor以及importdata會給用戶帶來很大的便利。MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-3Workspace的菜單欄中有一個Graphics菜單,當用戶選中其中某個變量,選擇該菜單項中的子選項,很方便地繪制相應(yīng)的各種圖形;也可以在選中某個變量后,單擊按鈕“〞繪制各種圖形MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-3MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-3Graphic菜單與工具欄按鈕MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-3MATLAB的程序編輯器可通過File下拉菜單或工具欄中的New/M-file、open項或者在命令編輯x中輸入edit命令都可以翻開M文件編輯器。在M文件編輯器里,不同文本內(nèi)容字體顏色不同,MATLA關(guān)鍵字如for、比end等為監(jiān)色,注釋語句為綠色,字符串為紅色,其他文本為黑色,這樣結(jié)構(gòu)鮮明便于調(diào)試。其中text菜單中的evaluateselection和indent項在編程和調(diào)試時很有用,在選定一局部程序的前提下,前者可以運行這局部程序,后者根據(jù)程序的邏輯關(guān)系自動編排格式,這樣程序看起來更清楚明了。MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-4路徑瀏覽器用來修改MATLAB的搜索路徑并查看任一路徑下的所有文件。在File/setpath…項可以翻開路徑瀏覽器窗口MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-5Matlab中的搜索路徑大體上就是預先告訴Matlab一些目錄地址,如果輸入的一個命令或者函數(shù),在當前目錄下無法找到那么Matlab自動到預先定義的那些目錄地址中去找.直預先給定的所有目錄查找完畢,仍然沒有結(jié)果,那么報錯找不到文檔.換句話說如果需要無論Matlab當前目錄跳轉(zhuǎn)到哪里,某個目錄下面的文件依舊可以被執(zhí)行,那么就要把該目錄參加Matlab的搜索路徑中.處理搜索路徑的方法有兩種:窗口操作命令操作MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-5第一種:窗口操作窗口右側(cè)MATLABsearchpath中為Matlab當前所有搜索路徑左側(cè)AddFolder:參加新的目錄.Addwithsubfolders:不僅參加某個目錄,該目錄下所有子目錄也都將被參加.Moveup/down/bottom/top:調(diào)整已有搜索路徑,Matlab是按照先后次序使用搜索路徑Remove:從搜索路徑中刪除選中的目錄Save:千萬別忘記先save,保存下你所作出的更改,之后再Close退出這個設(shè)置窗口.MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-5第二種:命令操作有時有必要命令行操作.例如某個程序要將它自己所在路徑參加搜索路徑時.path語法:直接使用path得到Matlab當前搜索路徑的字符串.rmpath語法:rmpath已有搜索路徑名將從搜索路徑中刪除指定路徑名.addpath語法:addpath新路徑添加新搜索路徑.rehash語法:rehash查看當前所有搜索路徑下的Matlab中可執(zhí)行文件.savepath語法:savepath保存當前路徑設(shè)置,下次啟動后設(shè)置生效。MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-5歷史指令窗口CommandHistory用來存放曾在CommandWindow中使用過的語句。目的是便于用戶追溯、查找曾經(jīng)用過的語句,利用這些既有的資源節(jié)省編程時間。窗口中的內(nèi)容,可在選中的前提下,將它們復制到當前命令窗口中,以供進一步修改或直接運行。這在需要重復處理長語句時、或在選擇多行曾經(jīng)用過的語句形成M文件時很有用。執(zhí)行Edit菜單中的ClearCommandHistory命令即去除CommandHistory窗口中內(nèi)容。執(zhí)行上述命令后,CommandHistory窗口以前的命令再也不能追溯和利用。MATLAB教程---電氣工程系研究生

根底準備及入門

MATLAB常用交互界面-6MATLAB教程

根底準備及入門---電氣工程系幫助系統(tǒng)及其使用常用幫助指令1、函數(shù)搜索指令〔知道具體函數(shù)名,不知如何使用〕指令窗口幫助系統(tǒng)〔在指令窗口顯示幫助信息〕help列出所有函數(shù)分組名helpTopicName列出指定名稱函數(shù)組中的所有函數(shù)helpFunName給出指定名稱函數(shù)的使用方法翻開幫助系統(tǒng)顯示幫助信息helpwin列出所有函數(shù)分組名helpwinTopicName列出指定名稱函數(shù)組中的所有函數(shù)helpwinFunName給出指定名稱函數(shù)的使用方法更詳盡的幫助信息docToolboxName列出指定名稱工具包中的所有函數(shù)名docFunName給出指定名稱函數(shù)的使用方法操作舉例:barMATLAB教程

根底準備及入門窗口操作及規(guī)那么---電氣工程系

二、運行最簡單的計算器使用方法【例一】在指令窗做如下操作

MATLAB運算符是各種計算程序中常見的習慣符號一條指令結(jié)束后,必須按回車鍵,該指令才會執(zhí)行不含賦值號的表達式的結(jié)果賦給MATLAB的一個默認變量ansMATLAB教程

根底準備及入門窗口操作及規(guī)那么---電氣工程系

二、運行【例二】指令續(xù)行3個或3個以上的連續(xù)黑點表示續(xù)行包含賦值號=指令執(zhí)行后,變量S被保存到MATLAB的工作空間〔Workspace〕中備用。如果不用clear指令去除或重新賦值,那么會一直保存在空間中,直到本MATLAB指令窗口關(guān)閉為止。MATLAB教程

根底準備及入門窗口操作及規(guī)那么---電氣工程系

二、運行【例三】逗號,分號;的使用以上兩種情況都是合法的,左邊使用逗號將兩個表達式分開,回車后xy的結(jié)果都顯示,右邊使用分號,表示x的結(jié)果不顯示,只顯示y的結(jié)果MATLAB教程

根底準備及入門窗口操作及規(guī)那么---電氣工程系

二、運行常用標點的意義空格輸入量之間的分隔符〔命令窗口會忽略變量之間的這些空格〕,輸入數(shù)組元素之間的分隔符,逗號要顯示計算結(jié)果與其他命令之間的分隔;輸入量之間的分隔符或數(shù)組元素之間的分隔符.點在數(shù)值計算中,可以作為小數(shù)點來使用;在數(shù)組運算過程中,可作為元素運算的標示;分號在命令行末尾表示在計算結(jié)束后不顯示計算結(jié)果;或在輸入數(shù)組時,作為數(shù)組之間的分隔符:冒號在生成一維數(shù)組時,可作為分隔符;用作單下標引用時的全部元素構(gòu)成的全部數(shù)列;循環(huán)運算過程中的分隔符%百分號位于命令行的開頭,表示該行為注釋行‘’單引號對用于定義字符串〔〕圓括號改變運算過程中的優(yōu)先級次序;在函數(shù)調(diào)用時使用;作為數(shù)組的索引[]方括號定義矩陣{}花括號定義單元數(shù)組;圖形中被控特殊字符括號-下劃線定義變量、函數(shù)或文件時使用的連字符;圖形中被控下腳標的簽到符號…續(xù)行號當輸入命令窗口的命令較長時,可在一行中未完成的命令后輸入三個以上的點號,在下一行繼續(xù)輸入該命令的剩余局部,完成較長命令的輸入與執(zhí)行。@“at〞號放在函數(shù)名稱前,形成函數(shù)句柄;作為匿名函數(shù)的前導符!感慨號調(diào)用操作系統(tǒng)運算MATLAB教程

根底準備及入門窗口操作及規(guī)那么---電氣工程系

二、運行【例四】控制鍵方向鍵的使用在命令出現(xiàn)錯誤或需要修改時,可點擊↑或↓調(diào)出以前輸入的命令,進行修改并回車,回車時可在該行任何位置,不必將光標移至句末。還可以只輸入命令行的少數(shù)幾個字符,然后使用↑可以將最后一個以這幾個字符開頭的命令行調(diào)出。MATLAB教程

根底準備及入門窗口操作及規(guī)那么---電氣工程系

二、運行常用的命令行控制鍵:↑↓→←

PgUpPgDnHomeEndDel刪左Backspace刪右

Esc刪整行MATLAB教程

根底準備及入門窗口操作及規(guī)那么---電氣工程系

二、運行數(shù)值、變量和表達式合法的數(shù)值表達:3-990.0011.3e-34.5e33范圍:10-308~10308變量名規(guī)那么:*區(qū)分大小寫*第一個為英文字母,最多包含63個字符*不得包含空格、標點、運算符,可包含下連符如my_var_2021是合法的*禁忌:不與MATLAB關(guān)鍵詞〔for,if/else,end等)同名,盡量不與MATLAB自用的變量名〔如eps,pi等〕、函數(shù)名〔如sin,eig等〕、文件夾名〔如rtw,toolbox等〕相同*MATLAB提供兩個判斷指令用于判斷所用變量名是否犯忌iskeywordUserName運行結(jié)果為0表示不同于關(guān)鍵字existUserName運行結(jié)果為0表示不同于自用變量名、函數(shù)名、文件夾名MATLAB教程

根底準備及入門窗口操作及規(guī)那么---電氣工程系

二、運行默認的數(shù)學常數(shù)

eps:浮點相對精度

exp:自然對數(shù)的底數(shù)e

i或j:根本虛數(shù)單位

inf或Inf:無限大,例如1/0

nan或NaN:非數(shù)值〔Notanumber〕,例如0/0

pi:圓周率p〔=3.1415926...〕

realmax:系統(tǒng)所能表示的最大數(shù)值

realmin:系統(tǒng)所能表示的最小數(shù)值

nargin:函數(shù)的輸入?yún)?shù)個數(shù)

nargout:函數(shù)的輸出參數(shù)個數(shù)

lasterr:存放最新的錯誤信息

lastwarn:存放最新的警告信息MATLAB教程

根底準備及入門---電氣工程系MATLAB教程

根底準備及入門---電氣工程系MATLAB教程

根底準備及入門---電氣工程系MATLAB教程

根底準備及入門---電氣工程系MATLAB教程

根底準備運行---電氣工程系

向量運算向量的構(gòu)造在MATLAB中“:〞是一個重要的字符,如x=1:4即產(chǎn)生一個1-4單位增量的行向量MATLAB教程

根底準備運行---電氣工程系

也可以產(chǎn)生單位增量小于1的行向量,方法是把增量放在起始和結(jié)尾量的中間,并用冒號分割開來。如:MATLAB教程

根底準備運行---電氣工程系

也可以產(chǎn)生單位增量為負數(shù)的行向量,如MATLAB教程

根底準備運行---電氣工程系符號“:〞也可以用來產(chǎn)生簡易的表格。為了產(chǎn)生縱向表格形式,首先要用它產(chǎn)生行向量,然后進行轉(zhuǎn)置.再利用所得的列向量計算出另一列向量,即可合成有兩列的矩陣。例如:MATLAB教程

根底準備運行---電氣工程系下標MATLAB的下標具有很重要的功能,可以在對矩陣的行、列子矩陣處理時使用,也可以用來產(chǎn)生向量。使用下標和向量,會使運算更為清晰和方便。單個的矩陣元素可在括號中用下標來表達。例如,其中元素A(3,3)=9,A=(1,3)=4,A(3,1)=3等等。假設(shè)用語句A(3,3)=A(1,3)+A(3,1),利用原矩陣的元素產(chǎn)生新元素(即為A(3,1)+A(1,3)=7)替代A矩陣中第三行第三列的元素A(3,3),那么產(chǎn)生的新的A矩陣為MATLAB教程

根底準備運行---電氣工程系下標可以是一個向量,例如假設(shè)x和v都是向量,那么x(v)也是一個向量:[x(v(1))x(v(2))…x(v(n))]。對于矩陣來說,向量下標可以將矩陣中鄰近或不鄰近元素構(gòu)成一新的子矩陣;假設(shè)A是一個10×10的矩陣,那么A(1:5,3)指A中由前5行對應(yīng)第三列元素組成的5×1子矩陣。又如A(1:5,7:10)是前5行對應(yīng)最后4列組成的5x4子矩陣。使用“:〞代替下標.可以表示所有的行或列。如:A(:3)代表第3列的所有元素組成的子陣,A(1:5,:)代表由前5行所有元素組成的子矩陣。對于子矩陣的賦值語句,“:“有更明顯的優(yōu)越性。如A(:,[3,5,10])=B(:,1:3)表示將B矩陣的前三列,賦值結(jié)A矩陣的第三、第五和第十列。通常如果v和w是具有整數(shù)性質(zhì)的向量,那么A(v,w)通過取出行下標v和列下標w對應(yīng)的A的元素而形成新的矩陣。于是,A(:,n:-1:1)即為由原來A矩陣中取n至1負增長的列的元素組成一個新的矩陣,其行數(shù)仍為原來A矩陣的行數(shù),列數(shù)為n。MATLAB教程

根底準備運行---電氣工程系如果v=2:2:n;W=[31416],此時A(v,w)是合法的,但并不排除出問題的可能性。進一步分析,A(:)在賦值語句的右邊,表示將A的所有元素按各列在一個長的列向量中展成串,如A=[12;34;56],b=A(:)那么結(jié)果為MATLAB教程

根底準備運行---電氣工程系在賦值語句左邊A(:)可以重新組成與剛剛的A具有相同階數(shù)的矩陣,這相當于在原來的A沒有被去除的情況下,用新的元素置換,實際上起著一種提供格式的作用。例如在上例的根底上〔a陣為三行兩列矩陣〕〔a在前面例子中的規(guī)格已經(jīng)為3*2的矩陣〕體會以下語句:B1=A(1:2:end,:)%提取A矩陣全部的奇數(shù)行、所有列B2=A([3,2,1],[2,3,4])%提取A矩陣3,2,1行、2,3,4列構(gòu)成子矩陣B3=A(:,end:-1:1)%將A矩陣左右翻轉(zhuǎn),即最后一列排在最前MATLAB教程

根底準備三、根本數(shù)學運算---電氣工程系矩陣的運算1、矩陣的代數(shù)運算B=A’轉(zhuǎn)置X=A\B(AX=B)左除X=B/A(XA=B)右除C=A+BC=A-BC=A*BB=fliplr(A)左右翻轉(zhuǎn)(flipleftright)C=flipud(A)上下翻轉(zhuǎn)〔flipupdown)D=rot90(A)逆時針旋轉(zhuǎn)90度F=A^x乘方C=A.*B點運算(矩陣相應(yīng)元素之間直接進行乘法Cij=AijBij〕X.^5x中每個元素取5次方A.^A每個元素取aijaijMATLAB教程

根底準備三、根本數(shù)學運算---電氣工程系2、邏輯運算A&B與如果兩矩陣相應(yīng)元素均非0那么給結(jié)果元素為1,否那么為0A|B或如果兩矩陣相應(yīng)元素均為0那么給結(jié)果元素為0,否那么為1A~非假設(shè)相應(yīng)元素為0,那么結(jié)果為1,否那么為0xor〔A,B)異或如果相應(yīng)兩元素一個為0,一個非0,那么結(jié)果為0,否那么為1可在MATLAB中進行試用

MATLAB教程

根底準備三、根本數(shù)學運算---電氣工程系矩陣的比較運算C=A>B當A和B矩陣滿足aij>bij時,cij=1,否那么為0==>=~=(不等于〕MATLAB還提供了一些特殊函數(shù):find()查詢出滿足某關(guān)系的數(shù)組下標〔MATLAB以逐列順序安排數(shù)組下標,即先構(gòu)成列向量,再分配數(shù)組下標〕如:find(isnan(a))查找a中為nan的各元素下標。MATLAB教程

根底準備三、根本數(shù)學運算---電氣工程系查詢函數(shù)all()如all(a>=5)當a中的某列元素全大于等于5時,結(jié)果元素為1,否那么為0any()如any(a>=5)當某列中含有大于等于5的元素時,結(jié)果為1,否那么為0假設(shè)想判定一個矩陣的所有元素是否都大于等于5時,那么可寫成all(a(:)>=5)MATLAB教程

根底準備根本數(shù)學運算---電氣工程系解析結(jié)果的化簡與變換符號運算工具箱可用于推導數(shù)學公式,但結(jié)果有時不是最簡形式,或不是用戶期望的形式。MATLAB提供了一些化簡函數(shù):

simple()得出各種方法中自動選擇最簡格式

collect()函數(shù)合并同類項

numden()提取多項式的分子和分母

sincos()進行三角函數(shù)的化簡另外還有一個很有用的變量替換函數(shù)subs()MATLAB教程

根底準備根本數(shù)學運算---電氣工程系例:MATLAB教程

根底準備根本數(shù)學運算---電氣工程系根本數(shù)據(jù)變換和數(shù)論函數(shù)floor()n=floor(x)將x中元素按-∞方向取整ceil()n=ceil(x)將x中元素按+∞方向取整round()n=round(x)將x中元素按最近的整數(shù)取整fix()n=fix(x)將x中元素按離0近的方向取整rat()[n,d]=rat(x)將x中元素變換成最簡有理數(shù),n和d分別為分子和分母矩陣rem()B=rem(A,C)A中元素對C中元素求模得出的余數(shù)gcd()k=gcd(n,m)求取兩個整數(shù)n和m的最大公約數(shù)lcm()k=lcm(n,m)求取兩個整數(shù)n和m的最小公倍數(shù)factor()factor(n)對n進行質(zhì)因數(shù)分解isprime()v1=isprime(v)判定向量v中的各個整數(shù)值是否為質(zhì)數(shù),假設(shè)是那么v1向量相應(yīng)的值置1,否那么為0MATLAB教程

程序設(shè)計M文件

---電氣工程系MATLAB命令執(zhí)行方式:1〕交互式命令執(zhí)行方式〔逐條解釋〕2〕M文件的程序執(zhí)行方式〔擴展名.m的以matlab語言編寫的文件〕掌握建立和執(zhí)行M文件的方法掌握利用if語句、switch語句實現(xiàn)選擇結(jié)構(gòu)的方法掌握利用for語句.while語句實現(xiàn)循環(huán)結(jié)構(gòu)的方法熟悉利用向量運算來代替循環(huán)操作的方法掌握定義和調(diào)用MATLAB函數(shù)的方法MATLAB教程

程序設(shè)計M文件

---電氣工程系M文件是文本文件,可以用任何編輯程序來建立和編輯,默認用MATLAB提供的文本編輯器翻開進行編輯。一、M文件的建立和翻開〔三種方法〕建立:命令按鈕操作:點擊MATLAB“新建〞〔NewM-file)菜單操作:File→New→M-file命令操作:命令窗口鍵入editM文件保存位置一般是MATLAB默認的工作目錄work,如果要存到其它目錄,那么應(yīng)該將該目錄設(shè)定為當前目錄或?qū)⑵浼拥剿阉髀窂街?。翻開M文件:命令按鈕操作菜單操作命令操作〔命令窗口鍵入:edit文件名〕在當前目錄窗口左鍵雙擊文件名翻開MATLAB教程

程序設(shè)計M文件

---電氣工程系二、M文件的分類根據(jù)調(diào)用方式的不同分為兩類:命令(腳本〕文件(ScriptFile)函數(shù)文件(FunctionFile),擴展名均為.mScriptFile命令〔腳本〕文件沒有輸入?yún)?shù),也不返回輸出參數(shù),而函數(shù)文件可以帶輸入?yún)?shù),也可返回輸出參數(shù)命令〔腳本〕文件對MATLAB工作空間中的變量進行操作,文件中所有命令的執(zhí)行結(jié)果也完全返回到工作空間中,而函數(shù)文件中定義的變量為局部變量,當函數(shù)文件執(zhí)行完畢時,這些變量被去除命令〔腳本〕文件可以直接運行,在MATLAB命令窗口輸入命令文件的名字.就會順序執(zhí)行命令文件中的命令,而函數(shù)文件不能直接運行,需要要以函數(shù)調(diào)用的方式來調(diào)用它MATLAB教程

程序設(shè)計M文件

---電氣工程系【例一】建立一個M文件,其功能是:用兩個實變量R、M生成復變量RM。做法:首先建立命令文件并以文件名setcomp.m保存在當前目錄下clearR=[1,2,3;4,5,6];M=[11,12,13;14,15,16];RM=R+i*M然后在MATLAB命令窗口中輸人setcomp,那么會執(zhí)行該m文件,結(jié)果為RM=1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i調(diào)用該命令文件時,不用輸入?yún)?shù),也沒有輸出參數(shù),文件自身建立需要的變量。當文件執(zhí)行完畢后,可以用命令whos查看工作空間中的變量,R、M、RM仍保存在空間中。MATLAB教程

程序設(shè)計M文件

---電氣工程系【例一】MATLAB教程

程序設(shè)計M文件

---電氣工程系【例二】建立一個函數(shù)文件fsetcomp.mfunctionRM=fsetcomp(R,M)RM=R+i*M;然后在MATLAB的命令窗口調(diào)用該函數(shù)文件:clear;a=[1,2,3;4,5,6];b=[10,11,12;13,14,15];c=fsetcomp(a,b)輸出結(jié)果為:

c=1.0000+10.0000i2.0000+11.0000i3.0000+12.0000i4.0000+13.0000i5.0000+14.0000i6.0000+15.0000i調(diào)用該函數(shù)文件時,既有輸入?yún)?shù),又有輸出參數(shù)。當函數(shù)調(diào)用完畢后,可以用命令whos查看工作空間中的變量,這時會發(fā)現(xiàn)函數(shù)參數(shù)R、M、RM未被保存在空間中,而a、b、c保存在空間中。MATLAB教程

程序設(shè)計M文件

---電氣工程系【例二】MATLAB教程

程序設(shè)計M文件

---電氣工程系例三編制M函數(shù)文件mean1.m,計算1-99的平均數(shù)第一步:第二步:保存為mean1.m第三步:在命令窗口輸入MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系任何程序都由三種根本控制結(jié)構(gòu)組成:順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。一、順序結(jié)構(gòu)〔一般涉及數(shù)據(jù)的輸入、數(shù)據(jù)的計算或處理、數(shù)據(jù)的輸出等〕1、數(shù)據(jù)的輸入input函數(shù)〔用于從鍵盤輸入數(shù)據(jù)〕,該函數(shù)調(diào)用格式:h=input(提示信息,選項〕;提示信息:字符串,提示用戶輸入什么樣的數(shù)據(jù)。例如,從鍵盤輸入A矩陣,可以采用下面的命令完成:h=input(‘輸入A矩陣:’〕;執(zhí)行語句時,屏幕上顯示提示信息〞輸入A矩陣:〞,然后等待用戶鍵入按MATLAB規(guī)定格式輸入A矩陣的值。如果在該函數(shù)中采用“s〞選項,那么允許輸入一個字符串。如想輸入一個人的姓名,可采用命令:Xm=input(‘what’syourname?’,’s’);MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系2、數(shù)據(jù)的輸出MATLAB提供的命令窗口輸出函數(shù)主要有disp函數(shù),調(diào)用格式為disp(輸出項〕其中:輸出項既可以為字符串,也可以為矩陣,如A=‘Hello,World!’;disp(A)輸出為Hello,World!又如:A=[1,2,3;4,5,6;7,8,9];disp(A)輸出為123456789〔disp函數(shù)顯示矩陣時不顯示函數(shù)名,不留空行〕MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系【例一】求方程ax2+bx+c=0的根程序:a=input(‘a(chǎn)=?’);b=input(‘b=?’);c=input(‘c=?’);d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp([‘x1=‘,num2str(x(1)),’,x2=‘,num2str(x(2))]);%num2strConvertnumbertostring

程序輸出為

a=?1b=?6c=?3x1=-0.55051,x2=-5.4495MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系【例一】求方程ax2+bx+c=0的根

MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系3.程序的暫停暫停程序的執(zhí)行可以使用pause函數(shù),其調(diào)用格式為:pause(延遲秒數(shù))如果省略延遲時間,直接使用pause,那么將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。假設(shè)要強行中止程序的運行可使用Ctrl+C命令。

MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系二、選擇結(jié)構(gòu)

1、if語句

a)單分支if語句語句調(diào)用格式為:if條件語句塊

end

MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系b)雙分支if語句語句調(diào)用格式為if條件語句塊1else

語句塊2end

MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系c〕多分支if語句語句調(diào)用格式為if條件語句塊1elseif語句塊2……elseif語句塊nelse語句塊n+1end

MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系例

計算分段函數(shù)的值。程序如下:x=input('請輸入x的值:');ifx<=0y=(x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endY

MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系2、switch語句〔根據(jù)表達式的取值不同,分別執(zhí)行不同的語句〕調(diào)用格式為switch表達式case結(jié)果表1語句塊1……case結(jié)果表n語句塊notherwise語句塊n+1endswitch子句后的表達式應(yīng)為一個標量或一個字符串,case子句后的結(jié)果即可為標量或字符串,也可為一個將多個結(jié)果用大括號括起來的單元數(shù)據(jù)〔cell)。如果case后的結(jié)果為一個單元數(shù)據(jù),那么表達式的值等于該單元數(shù)據(jù)中的某個元素時,執(zhí)行相應(yīng)語句組。MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系例某商場對顧客所購置的商品實行打折銷售,標準如下(商品價格用price來表示):price<200沒有折扣200≤price<5003%折扣500≤price<10005%折扣1000≤price<25008%折扣2500≤price<500010%折扣5000≤price14%折扣輸入所售商品的價格,求其實際銷售價格。MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系程序如下:price=input('請輸入商品價格');switchfix(price/100)case{0,1}%價格小于200rate=0;case{2,3,4}%價格大于等于200但小于500rate=3/100;casenum2cell(5:9)%價格大于等于500但小于1000rate=5/100;casenum2cell(10:24)%價格大于等于1000但小于2500rate=8/100;casenum2cell(25:49)%價格大于等于2500但小于5000rate=10/100;otherwise%價格大于等于5000rate=14/100;endprice=price*(1-rate)%輸出商品實際銷售價格MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系3.try語句語句格式為:try語句組1catch語句組2endtry語句先試探性執(zhí)行語句組1,如果語句組1在執(zhí)行過程中出現(xiàn)錯誤,那么將錯誤信息賦給保存的lasterr變量,并轉(zhuǎn)去執(zhí)行語句組2。MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系例3-7矩陣乘法運算要求兩矩陣的維數(shù)相容,否那么會出錯。先求兩矩陣的乘積,假設(shè)出錯,那么自動轉(zhuǎn)去求兩矩陣的點乘。程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr%顯示出錯原因MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系三、循環(huán)結(jié)構(gòu)〔按給定條件重復執(zhí)行指定語句〕MATLAB提供了兩種語句:for語句和while語句1、for語句的格式為for循環(huán)變量=表達式1;表達式2;表達式3循環(huán)體語句end其中,表達式1的值為循環(huán)變量初值,表達式2的值為步長,表達式3的值為循環(huán)變量的終值。步長為1時,表達式2可以省略。MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系【例】一個3位整數(shù)各位數(shù)字的立方和等于該數(shù)本身那么稱該數(shù)為水仙花數(shù)。輸出全部的水仙花數(shù)。程序如下:shu=[]%用于存放結(jié)果,先賦空值form=100:999m1=fix(m/100);%求m的百位數(shù)字m2=rem(fix(m/10),10);%求m的十位數(shù)字m3=rem(m,10);%求m的個位數(shù)字ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3shu=[shu,m]%存入結(jié)果endendshu程序執(zhí)行結(jié)果:shu=153370371407MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系【例】y=1-1/2+1/3-1/4+1/5…-1/100,求y的值,程序如下: y=0; n=100; fori=1:n y=y+(-1)^(i-1)/i; end disp(y)程序執(zhí)行結(jié)果為y=0.6882上兩例中,for語句的循環(huán)變量都是標量,與其他高級語言的循環(huán)語句等價。而MATLAB中循環(huán)變量還可以是一個列向量,那么更一般調(diào)用格式為:for循環(huán)變量=矩陣表達式循環(huán)體語句endMATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系for語句更一般的格式為:

for循環(huán)變量=矩陣表達式循環(huán)體語句

end

執(zhí)行過程是依次將矩陣的各行元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語句,直至各行元素處理完畢。MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系【例】求矩陣各行的和,程序如下:

s=0; a=[12,13,14;15,16,17;18,19,20;21,22,23]; fork=a s=s+k; end disp(s)該程序執(zhí)行結(jié)果:39485766MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系 2、While語句While語句的調(diào)用格式為 while(條件〕循環(huán)體語句 end其執(zhí)行過程為:假設(shè)條件成立,那么執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如不成立那么跳出循環(huán)。MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系例從鍵盤輸入假設(shè)干個數(shù),當輸入0時結(jié)束輸入,求這些數(shù)的平均值和它們之和。程序如下:sum=0;cnt=0;val=input('Enteranumber(endin0):');while(val~=0)sum=sum+val;cnt=cnt+1;val=input('Enteranumber(endin0):');endif(cnt>0)summean=sum/cntendMATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系3.break語句和continue語句與循環(huán)結(jié)構(gòu)相關(guān)的語句還有break語句和continue語句。它們一般與if語句配合使用。

break語句用于終止循環(huán)的執(zhí)行。當在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句。

continue語句控制跳過循環(huán)體中的某些語句。當在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻^循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。MATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系例

求[100,200]之間第一個能被21整除的整數(shù)。程序如下:forn=100:200ifrem(n,21)~=0continueendbreakendnMATLAB教程

程序設(shè)計程序控制結(jié)構(gòu)

---電氣工程系 4.循環(huán)的嵌套如果一個循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個循環(huán)結(jié)構(gòu),就稱為循環(huán)的嵌套或多重循環(huán)結(jié)構(gòu)。例假設(shè)一個數(shù)等于它的各個真因子之和,那么稱該數(shù)為完數(shù),如6=1+2+3,所以6是完數(shù)。求[1,500]之間的全部完數(shù)。form=1:500s=0;fork=1:m/2ifrem(m,k)==0s=s+k;endendifm==sdisp(m);endendMATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系函數(shù)文件函數(shù)文件是另一種形式的M文件,每一個函數(shù)文件都定義一個函數(shù),MATLAB提供的標準函數(shù)大局部是由函數(shù)文件定義的。一、函數(shù)文件的根本結(jié)構(gòu)函數(shù)文件由function語句引導,根本結(jié)構(gòu)為function輸出形參表=函數(shù)名〔輸入形參表〕function[返回變量列表]=函數(shù)名(輸入變量列表〕注釋說明局部注釋說明語句段,由%引導函數(shù)體語句輸入、返回變量格式的檢測函數(shù)體語句其中,以function開頭的一行為引導行,表示該M文件是一個函數(shù)文件。函數(shù)名的命名規(guī)那么與變量名相同。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當輸出形參多于一個時,那么應(yīng)該用方括號括起來。MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系說明〔1〕函數(shù)文件名通常由函數(shù)名再加上擴展名.m組成,不過函數(shù)文件名與函數(shù)名也可以不同。當兩者不同時,MATLAB將忽略函數(shù)名而確認函數(shù)文件名,調(diào)用時使用函數(shù)文件名。不過最好兩者一致,以免出錯?!?〕注釋說明包括三局部內(nèi)容◆緊隨函數(shù)文件引導行之后以%開頭的第一注釋行。一般包括大寫的函數(shù)文件名和函數(shù)功能簡要描述,供lookfor關(guān)鍵詞查詢和help在線幫助用。 ◆第一注釋行及之后連續(xù)的注釋行。通常包括函數(shù)輸入輸出參數(shù)的含義及調(diào)用格式說明等信息,構(gòu)成全部在線幫助文本?!襞c在線幫助文本相隔一空行的注釋行。包括函數(shù)文本編寫和修改的信息,如作者、修改日期、版本等內(nèi)容,用于軟件檔案管理。 〔3〕如果在函數(shù)文件中插入return語句,那么執(zhí)行到該語句就結(jié)束函數(shù)的執(zhí)行,程序流程轉(zhuǎn)至調(diào)用該函數(shù)的位置。通常,在函數(shù)文件中也可不使用return語句,這時在被調(diào)用函數(shù)執(zhí)行完成后自動返回。MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系從系統(tǒng)的角度來說,MATLAB函數(shù)是一個變量處理單元,它從主調(diào)函數(shù)接收變量,對之進行處理后,將結(jié)果返回到主調(diào)函數(shù)中,除了輸入和輸出變量外,其他在函數(shù)內(nèi)部產(chǎn)生的所有變量都是局部變量,在函數(shù)調(diào)用結(jié)束后這些變量均將消失。輸入和返回變量的實際個數(shù)分別由nargin和nargout兩個MATLAB保存變量來給出,只要進入該函數(shù),MATLAB就將自動生成這兩個變量。

MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系【例】

編寫函數(shù)文件求半徑為r的圓的面積和周長。函數(shù)文件如下:

function[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圓半徑%s圓面積%p圓周長%2004年7月30日編s=pi*r*r;p=2*pi*r;MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系【例】編寫求一個向量之和及平均值的函數(shù)文件: function[s,m]=fvector(v) %VECTORfvector.mcalculatessumandmeanofavector %v向量 %s和 %m平均值 %2021年12月10日編 [m,n]=size(v); if(m<1&n<1)|(m==1&n==1)error(‘Inputmustbeavector’) end s=sum(v);%求向量和 m=s/length(v);%求向量平均值MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系 將以上函數(shù)文件以文件名fvector.m存盤,然后再MATLAB命令窗口調(diào)用: [s,p]=fvector(1:10〕 輸出結(jié)果為 s=55p=5.5000 采用help命令或lookfor命令可顯示出注釋說明局部的內(nèi)容,其功能和一般MATLAB函數(shù)的幫助信息一致。

MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系

利用help命令可查詢fvector函數(shù)的注釋說明:

helpfvector

屏幕顯示:

%VECTORfvector.mcalculatessumandmeanofavector %v向量

%s和

%m平均值 再用lookfor命令在第一注釋行查詢指定的關(guān)鍵詞:

lookforfvector

屏幕顯示:

fvector.m:%VECTORfvector.mcalculatessumandmeanofavectorMATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系

具體操作:MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系二、函數(shù)調(diào)用函數(shù)文件編制好后,就可以調(diào)用函數(shù)文件進行計算了。函數(shù)調(diào)用一般格式為[輸出實參表]=函數(shù)名(輸入實參表) 要注意的是,函數(shù)調(diào)用時各實參出現(xiàn)的順序、個數(shù),應(yīng)與函數(shù)定義時形參的順序個數(shù)一致,否那么會出錯。函數(shù)調(diào)用時,先將實參傳遞給相應(yīng)的形參,從而實現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。

MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系【例】利用函數(shù)文件實現(xiàn)直角坐標(x,y)與極坐標(ρ,θ)之間的轉(zhuǎn)換,轉(zhuǎn)換關(guān)系:ρ=(x2+y2)1/2θ=arctan(y/x)函數(shù)文件tran.m function[rho,theta]=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x); 調(diào)用tran.m的命令文件main1.m(即,在M文件編輯器中建立并保持的文件〕 x=input(‘pleaseinputx=:’);y=input(‘pleaseinputy=:’); [rho,theta]=tran(x,y) rho theta 在MATLAB中,函數(shù)可以嵌套使用,即一個函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)用它自身。一個函數(shù)調(diào)用它自身稱為函數(shù)的遞歸調(diào)用。MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系操作:MATLAB教程

程序設(shè)計函數(shù)文件

---電氣工程系【例】利用函數(shù)的遞歸調(diào)用,求n!n!

溫馨提示

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

評論

0/150

提交評論