版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)學(xué)實(shí)驗(yàn)Matlab
編程入門(一)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文件),然后在命令窗口中運(yùn)行該文件,Matlab
就會(huì)自動(dòng)依次執(zhí)行文件中的命令,直到全部命令執(zhí)行完畢在Matlab
程序設(shè)計(jì)中,要充分利用Matlab
數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),提高編程效率
Matlab
編程簡(jiǎn)介
M文件介紹主要內(nèi)容
Matlab
編程基礎(chǔ)算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算控制結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)用Matlab
語(yǔ)言編寫的程序稱為M文件
M文件以.m
為擴(kuò)展名M文件是由若干Matlab
命令組合在一起構(gòu)成的,它可以完成某些操作,也可以實(shí)現(xiàn)某種算法
M文件分類(根據(jù)調(diào)用方式的不同)
Script:腳本文件/命令文件
Function:函數(shù)文件M文件
M文件介紹可以直接運(yùn)行的M文件
M文件的創(chuàng)建的與編輯
M文件是文本文件,可以用任何文本編輯器來(lái)建立和編輯,通常使用Matlab
自帶的M文件編輯器M文件新建一個(gè)M文件菜單操作(FileNewM-File
)命令操作(editM文件名)命令按鈕(快捷鍵)打開已有的M文件菜單操作
(FileOpen
)命令操作(editM文件名)命令按鈕
(快捷鍵)雙擊M文件在命令窗口中輸入fcs,即可執(zhí)行該M文件例:編寫M文件,將華氏溫度轉(zhuǎn)化為攝氏溫度:編程示例clear;%清除當(dāng)前工作空間中的所有變量f=input('InputFahrenheittemperature:');c=5*(f-32)/9;fprintf('Thecentigradetemperatureis%g\n',c);新建一個(gè)M文件
fcs.m,內(nèi)容如下:
M文件運(yùn)行所產(chǎn)生的變量都駐留在Matlab
當(dāng)前工作空間百分號(hào)是注釋符
M文件必須在當(dāng)前工作目錄下或已存的搜索路徑下才能運(yùn)行
M文件介紹主要內(nèi)容
Matlab
編程基礎(chǔ)算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算控制結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)關(guān)系運(yùn)算<小于<=小于等于>大于>=大于等于==等于~=不等于比較大小,如果結(jié)論是真則返回1,否則返回0注意=
=與=
的區(qū)別關(guān)系操作符可以比較兩個(gè)同樣大小的數(shù)組,或用來(lái)比較一個(gè)數(shù)組和一個(gè)標(biāo)量,在后一種情況,標(biāo)量和數(shù)組中的每一個(gè)元素相比較,比較結(jié)果與數(shù)組大小一樣關(guān)系運(yùn)算符例:關(guān)系運(yùn)算舉例>>
2+2==4>>
2>3>>
A=[135;206];>>
B=[310;246];>>
A>=B>>
x=[50;42];>>
x<4&與(ElementwiseAND)|或(ElementwiseOR)~非xor(x,y)異或邏輯運(yùn)算邏輯運(yùn)算符&&與(Short-circuitAND)||或(Short-circuitOR)A
&
B
等價(jià)于and(A,B)A
|
B
等價(jià)于or(A,B)
~
A
等價(jià)于not(A)邏輯運(yùn)算邏輯運(yùn)算符Matlab中的邏輯運(yùn)算"&&"與"&","||"與"|"的區(qū)別如下:A&B(1)首先判斷A的邏輯值,然后判斷B的值,然后進(jìn)行邏輯與的計(jì)算。(2)A和B可以為矩陣(e.g.A=[10],B=[00])。A&&B(1)首先判斷A的邏輯值,如果A的值為假,就可以判斷整個(gè)表達(dá)式的值為假,就不需要再判斷B的值。(2)A和B不能是矩陣,只能是標(biāo)量。"|"與“||”同理。邏輯運(yùn)算邏輯運(yùn)算符A&&B首先判斷A的邏輯值,如果A的值為假,就可以判斷整個(gè)表達(dá)式的值為假,就不需要再判斷B的值。這種用法非常有用,如果A是一個(gè)計(jì)算量較小的函數(shù),B是一個(gè)計(jì)算量較大的函數(shù),那么首先判斷A對(duì)減少計(jì)算量是有好處的。另外這也可以防止類似被0除的錯(cuò)誤:
flag=denum~=0&&num/denum>10ifflag
%DoSomething
end
上面的表達(dá)式就可以防止denum等于0的情況。當(dāng)然,如果你希望在判斷的時(shí)候,對(duì)A和B表達(dá)式都進(jìn)行計(jì)算,就應(yīng)該使用標(biāo)準(zhǔn)的&或者|。Matlab中的if和while語(yǔ)句中的邏輯與和邏輯或都是默認(rèn)使用short-circuit形式。
邏輯運(yùn)算邏輯運(yùn)算符ifflag=denum~=0&&num/denum>10
%DoSomething
end
與
ifflag=denum~=0&num/denum>10
%DoSomething
end
執(zhí)行的結(jié)果一樣
運(yùn)算對(duì)象與或非異或ABA&BA|B~AXor(A,B)000010010111100101111100邏輯運(yùn)算表在Matlab
中,0表示“假”,非零表示“真”all(x)
如果向量X
中所有元素都非零,則返回1,
否則返回0若x
為矩陣,則any
和all
按列運(yùn)算,返回一個(gè)0-1向量邏輯運(yùn)算相關(guān)函數(shù)any(x)如果向量X
中存在非零元素,則返回1,
否則返回0isfinite(x)若x
為有限值,返回真值1isinf(x)若x
為無(wú)窮大,返回真值1isnan(x)若x
為不定值,返回真值1isreal(x)若x
無(wú)虛部,返回真值1isstr(x)若x
為一個(gè)字符串,返回真值1isempty(x)若x
為空,返回真值1一些測(cè)試函數(shù)>>
isfinite(5)>>
isinf(5)括號(hào)冪,點(diǎn)冪正號(hào),負(fù)號(hào),邏輯非乘,除,點(diǎn)乘,點(diǎn)除加,減冒號(hào)運(yùn)算關(guān)系運(yùn)算&|&&||運(yùn)算優(yōu)先級(jí)高低
M文件介紹主要內(nèi)容
Matlab
編程基礎(chǔ)算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算控制結(jié)構(gòu):順序結(jié)構(gòu):數(shù)據(jù)輸入輸出(input、disp、fprintf
等)選擇結(jié)構(gòu):if語(yǔ)句、switch語(yǔ)句循環(huán)結(jié)構(gòu):for循環(huán)、while循環(huán)程序控制結(jié)構(gòu)有三種:
順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)
任何復(fù)雜的程序都由這三種基本結(jié)構(gòu)組成M文件控制流按排列順序依次執(zhí)行各條語(yǔ)句,直到程序的最后這是最簡(jiǎn)單的一種程序結(jié)構(gòu),一般涉及數(shù)據(jù)的輸入輸出、數(shù)據(jù)的計(jì)算或處理等順序結(jié)構(gòu)例:A=input('PleaseinputA:')數(shù)據(jù)的輸入:inputA=input(提示信息)其中提示信息為字符串,該命令要求用戶輸入A
的值(可以是數(shù)或字符串)inputname=input('What''syourname?')例:
輸入字符串時(shí)必須帶單引號(hào)單引號(hào)的輸出disp(X)輸出變量X
的值,X可以是數(shù)值矩陣或字符串一次只能輸出一個(gè)變量>>
B=[123;456;789];>>
disp(B)disp數(shù)據(jù)的輸出:disp>>
A='Hello,Tom!';>>
disp(A)例:fprintffprintf(fid,format,variables)數(shù)據(jù)的格式化輸出:fprintf按指定的格式將變量的值輸出到屏幕或指定的文件
fid
為文件句柄,若缺省,則輸出到屏幕上
format
用來(lái)指定數(shù)據(jù)輸出時(shí)采用的格式,包含:
普通字符串、格式字符串、轉(zhuǎn)義字符%d(整數(shù)
)%e(實(shí)數(shù):科學(xué)計(jì)數(shù)法形式
)%f(實(shí)數(shù):小數(shù)形式)%g(由系統(tǒng)自動(dòng)選取上述兩種格式之一)
%s(輸出字符串)
\n
(換行)
\t
(制表符)
\b
(退格)
\\
(反斜桿)
%%
(百分號(hào))fprintf>>
a='Hello';>>
b=2.4;>>
c=100*pi;>>
fprintf('a=%s,b=%f,c=%e\n',a,b,c)例:
format
中的格式字符串要與輸出變量一一對(duì)應(yīng)
可以沒有輸出變量>>
fprintf('
TodayisMonday\n')例:pause
暫停:pausepause或
pause(n)若想強(qiáng)行終止正常運(yùn)行的程序,可以使用Ctrl+c其中n
是暫停的時(shí)間,以秒為單位若缺省,則將暫停程序,直到用戶按任意鍵后繼續(xù)
pauseoff
屏蔽程序中所有pause的作用
pauseon
打開pause的作用選擇結(jié)構(gòu)是根據(jù)給定的條件成立或不成立,分別執(zhí)行不同的語(yǔ)句。Matlab
用于實(shí)現(xiàn)選擇結(jié)構(gòu)的語(yǔ)句有if
語(yǔ)句和switch
語(yǔ)句。選擇結(jié)構(gòu)單分支結(jié)構(gòu)ifexpr(條件)
語(yǔ)句組Aendif條件語(yǔ)句ifexpr(條件)
語(yǔ)句組Aelse
語(yǔ)句組Bend雙分支結(jié)構(gòu)ifexpr1(條件1)
語(yǔ)句組Aelseif
expr2(條件2)
語(yǔ)句組B......
elseif
exprm(條件m)
語(yǔ)句組melse
語(yǔ)句組end多分支結(jié)構(gòu)if條件語(yǔ)句根據(jù)表達(dá)式的不同取值,分別執(zhí)行不同的語(yǔ)句switchexpr(表達(dá)式)casevalue1(表達(dá)式1)
語(yǔ)句組1casevalue2(表達(dá)式2)
語(yǔ)句組2......casevaluem(表達(dá)式m)
語(yǔ)句組motherwise
語(yǔ)句組endswitch語(yǔ)句
Matlab
首先計(jì)算expression的值,然后將它依次與各個(gè)case指令后的檢測(cè)值進(jìn)行比較,當(dāng)比較結(jié)果為真時(shí),就執(zhí)行相應(yīng)的語(yǔ)句組,然后跳出switch結(jié)構(gòu)
switch后面的表達(dá)式expression的值可以是一個(gè)標(biāo)量或字符串switch語(yǔ)句
otherwise指令可以不出現(xiàn)如果所有的比較結(jié)果都為假,則執(zhí)行otherwise后面的語(yǔ)句組,然后跳出switch結(jié)構(gòu)關(guān)于switch語(yǔ)句的幾點(diǎn)注解:選擇結(jié)構(gòu)的語(yǔ)法格式與C語(yǔ)言對(duì)照MATLAB:ifa==bifc~=d
matlab=c;else
matlab=~c;
pascal=matlab;endendC:if(a==b){if(c!=d)
matlab=c;else{
matalb=!c;
pascal=matlab;}}MATLAB:
C:switch表達(dá)式(標(biāo)量或字符串)switch表達(dá)式(標(biāo)量或字符串))case常量表達(dá)式1{case常量表達(dá)式1:
語(yǔ)句1
語(yǔ)句1;break;
case常量表達(dá)式2
case常量表達(dá)式2:
語(yǔ)句2語(yǔ)句2;break;
……
otherwise/defaultdefault:語(yǔ)句n
語(yǔ)句n}end選擇結(jié)構(gòu)的語(yǔ)法格式與C語(yǔ)言對(duì)照循環(huán)結(jié)構(gòu)是按照給定的條件,重復(fù)執(zhí)行指定的語(yǔ)句。Matlab
用于實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語(yǔ)句有for語(yǔ)句和while語(yǔ)句循環(huán)結(jié)構(gòu)forvar
=
expr
循環(huán)體end循環(huán)變量
表達(dá)式expr
可以是行向量,也可以是矩陣for循環(huán)clear;y=0;n=100;fork=1:n
y=y+1/(2*k-1);end例:已知,當(dāng)n=100時(shí),求y的值循環(huán)語(yǔ)句可以嵌套使用while循環(huán)whileexpr(條件)
循環(huán)體end不能在for循環(huán)體內(nèi)改變循環(huán)變量的值為了提高代碼的運(yùn)行效率,應(yīng)盡可能提高代碼的向量化程度,避免
for循環(huán)的使用如果預(yù)先就知道循環(huán)的次數(shù),則可以采用for循環(huán);否則,如果預(yù)先無(wú)法確定循環(huán)的次數(shù),則可以使用while循環(huán)。循環(huán)結(jié)構(gòu)的語(yǔ)法格式與C語(yǔ)言對(duì)照
MatlabCwhilea==b
while(a==b)
c=c+1;
{c+=1;}end
while循環(huán)的格式為:
for循環(huán)的格式為:
MatlabCfori=1:2:100for(i=1;i<=100;i=i+2)c(i)=c(i)+1;{endc(i)=c(i)+1;
}MATLAB中循環(huán)變量的步長(zhǎng)缺省值是1。步長(zhǎng)可以在正實(shí)數(shù)或負(fù)實(shí)數(shù)范圍內(nèi)任意指定,循環(huán)變量的值大于(步長(zhǎng)為負(fù)數(shù)時(shí)小于)終止值時(shí),循環(huán)結(jié)束。
循環(huán)結(jié)構(gòu)的語(yǔ)法格式與C語(yǔ)言對(duì)照
break
和
continue
break
語(yǔ)句用于終止循環(huán)的執(zhí)行,即跳出最內(nèi)層循環(huán)
continue
語(yǔ)句用于結(jié)束本次循環(huán),進(jìn)行下一次循環(huán)
break
和continue
一般與if
語(yǔ)句配合使用其它流控制語(yǔ)句
return
return
語(yǔ)句用于退出正在運(yùn)行的腳本或函數(shù),通常用在函數(shù)文件中編程示例
數(shù)論中的一個(gè)有趣問題:3n+1
問題:任取一個(gè)正整數(shù),如果是偶數(shù),用2除,如果是奇數(shù),用3乘再加1,反復(fù)這個(gè)過程,直到所得到的數(shù)為1。問:是否存在使該過程永不中止的整數(shù)?
例:while
1
n=input('Pleaseentern(nonpositivequit):');
if
n<=0,
break;end
nt=n;
while
n>1
if
rem(n,2)==0
n=n/2;
else
n=3*n+1;
end
fprintf('\nn=%d',n);
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 同數(shù)連加解題策略
- 《GBT 35148-2017 石油天然氣工業(yè) 井下工具 完井工具附件》專題研究報(bào)告
- 《GB-T 15472-2012失真度測(cè)量?jī)x通 用規(guī)范》專題研究報(bào)告
- 《GB-T 25460-2010面向制造業(yè)信息化的ASP平臺(tái)功能體系結(jié)構(gòu)》專題研究報(bào)告
- 《GBT 33237-2016 光纖拉絲用石英玻璃把持管》專題研究報(bào)告
- 《AQ-T 2050.2-2016金屬非金屬礦山安全標(biāo)準(zhǔn)化規(guī)范 地下礦山實(shí)施指南》專題研究報(bào)告
- 2026年烏魯木齊職業(yè)大學(xué)單招職業(yè)傾向性測(cè)試題庫(kù)及參考答案詳解一套
- 水利工程履約保證金擔(dān)保協(xié)議
- 智能微電網(wǎng)運(yùn)維師崗位招聘考試試卷及答案
- 珠寶行業(yè)珠寶鑒定高級(jí)技師崗位招聘考試試卷及答案
- 項(xiàng)目分包制合同范本
- (2026.01.01施行)《生態(tài)環(huán)境監(jiān)測(cè)條例》解讀與實(shí)施指南課件
- 2025年及未來(lái)5年市場(chǎng)數(shù)據(jù)中國(guó)廢舊輪胎循環(huán)利用市場(chǎng)深度分析及投資戰(zhàn)略咨詢報(bào)告
- 2025天津大學(xué)管理崗位集中招聘15人考試筆試備考題庫(kù)及答案解析
- 學(xué)堂在線 批判性思維-方法和實(shí)踐 章節(jié)測(cè)試答案
- GB/T 44971-2024土壤硒含量等級(jí)
- 高中英語(yǔ)語(yǔ)法專項(xiàng) 詞性轉(zhuǎn)換(構(gòu)詞法)練習(xí)試題高考例句
- 合成生物學(xué)與基因回路課件
- 專題十-復(fù)合場(chǎng)課件
- 智慧樹知到《走進(jìn)故宮》2019期末考試答案
- 樂隊(duì)指揮教案
評(píng)論
0/150
提交評(píng)論