版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、程序設(shè)計(jì)基礎(chǔ),和其他語言一樣,MATLAB的程序結(jié)構(gòu)也不外三種:順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。,5、程序結(jié)構(gòu)和流程控制,5.1 順序結(jié)構(gòu),順序結(jié)構(gòu)即指順序往下執(zhí)行的程序語句結(jié)構(gòu),其實(shí)也就是一組復(fù)合的表達(dá)式。在MATLAB中,表達(dá)式之間可以用分號(hào)、逗號(hào)或換行來分隔。如前例的函數(shù)文件summ.m和命令文件use.m均為順序結(jié)構(gòu)。,5.2 分支結(jié)構(gòu),1、MATLAB的分支結(jié)構(gòu),程序設(shè)計(jì)基礎(chǔ),2、分支結(jié)構(gòu)的語句形式及實(shí)例,分支結(jié)構(gòu)就是由邏輯判斷決定程序執(zhí)行流轉(zhuǎn)方向的一種結(jié)構(gòu)。現(xiàn)有if.else.end和switch.case.end兩種形式。,第一類分支結(jié)構(gòu)采用的語句形式有3種:,if 表達(dá)式 語句組
2、1 end,if 表達(dá)式 語句組1 else 語句組2 end,if 表達(dá)式 A 語句組1 elseif 表達(dá)式B 語句組2 else 語句組3 end,注意:除直接應(yīng)用上述三種形式外,第3種結(jié)構(gòu)可擴(kuò)展,if 還可以嵌套。,程序設(shè)計(jì)基礎(chǔ),舉例: 例5.1 輸入數(shù)n,判斷其奇偶性。 程序式書寫法:* n=input(n=); if rem(n,2)=0 A=even else A=odd end,更完善的程序式書寫法: n=input(n=); if isempty(n)=1 A=empty elseif rem(n,2)=0 A=even else A=odd end,命令行書寫法: n=in
3、put(n=); if isempty(n)=1 A=empty, elseif rem(n,2)=0; A=even,else, A=odd, end,程序設(shè)計(jì)基礎(chǔ),例5.2 寫程序,判斷某一年是否閏年*。,C語言程序: main() int year,leap; scanf(“%d”,MATLAB程序: year=input(year=); if rem(year,4)=0 if rem(year,100)=0 if rem(year,400)=0 leap=1; else leap=0; end else leap=1; end else leap=0; end if leap disp
4、lay(is a leap year) else display(is not a leap year) end,程序設(shè)計(jì)基礎(chǔ),switch 表達(dá)式 case 值1 語句組1 case 值2 語句組2 otherwise 語句組n,第二類分支結(jié)構(gòu)采用的語句形式如下:,注意:switch后的表達(dá)式的結(jié)果值,通常為標(biāo)量或字符串。,程序設(shè)計(jì)基礎(chǔ),舉例: 例5.3 用switch語句改寫例3.1。,程序式書寫法: n=input(n=); switch mod(n,2)* case 1 A=奇 case 0 A=偶 otherwise A=空 end,程序設(shè)計(jì)基礎(chǔ),例5.4 給出一百分制成績,要求輸出
5、成績等級(jí)A、B、C、D、E。90分以上為A,8089分為B,7079分為C,6069分為D,60分以下為E。,C語言程序: main() int score,g; scanf(“%d”, ,MATLAB程序: score=input(score=); g=round(score/10-0.5); if g=10 display(A) else switch g case 9,display(A) case 8,display(B) case 7,display(C) case 6,display(D) otherwise display(E) end end,程序設(shè)計(jì)基礎(chǔ),1、MATLAB的循
6、環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu)就是執(zhí)行重復(fù)運(yùn)算的一段程序。MATLAB的循環(huán)語句有for.end和while.end兩種形式。 2、循環(huán)結(jié)構(gòu)的語句形式及實(shí)例,5.3 循環(huán)結(jié)構(gòu),For循環(huán)結(jié)構(gòu)的語句形式:,for 變量=初值:增量:終值 語句組 end,注意:for 還可以嵌套。,程序設(shè)計(jì)基礎(chǔ),舉例: 例5.5 列出構(gòu)成Hilbert矩陣的程序。 clear, close all format rat, n=input(n=), for i=1:n for j=1:n h(i,j)=1/(i+j-1); end end h,程序設(shè)計(jì)基礎(chǔ),例5.6 求100200間的全部素?cái)?shù)*。,C語言程序: # includ
7、e main() int m,k,i,n=0; for(m=101;m=k+1) printf(“%d”,m); n=n+1; ,MATLAB程序: n=0;x=1:21; for m=101:2:200 k=round(sqrt(m+1)-0.5); for i=2:k if rem(m,i)=0 break, end j=i+1; if j=k+1 n=n+1; x(n)=m; end end end x,程序設(shè)計(jì)基礎(chǔ),While循環(huán)結(jié)構(gòu)的語句形式:,while 表達(dá)式 語句組 end,注意:while 語句中的表達(dá)式通常為關(guān)系表達(dá)式或邏輯表達(dá)式。,舉例: 例5.7 求如下級(jí)數(shù)的和:1+1
8、/2+1/3+1/4+1/100。 s=0;n=1; while n=100 s=s+1/n; n=n+1; end,s,程序設(shè)計(jì)基礎(chǔ),例5.8 用/41-1/3+1/5-1/7+公式求的近似值,直到最后一項(xiàng)的絕對(duì)值小于10-6為止。,C語言程序: #include main( ) int s; float n,t,pi; t=1, pi=0; n=1.0; s=1; while(fabs(t)1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(“pi=%10.6fn”,pi); ,MATLAB程序: t=1;pi=0; n=1;s=1; wh
9、ile abs(t)1e-6 pi=pi+t; n=n+2; s=-s; t=s/n; end pi=4*pi,程序設(shè)計(jì)基礎(chǔ),匿名函數(shù)可以接受多個(gè)輸入輸出參數(shù)。創(chuàng)建匿名函數(shù)的格式: fhandle=(arglist) expr 其中:“expr”通常是一個(gè)簡單的MATLAB變量表達(dá)式,實(shí)現(xiàn)函數(shù)的功能;“arglist”是參數(shù)列表;“”是MATLAB中創(chuàng)建函數(shù)句柄的操作符.,匿名函數(shù)實(shí)例: myfhd1=(x)(x+x.2) myfhd1(2) ans=6 myfhd2=(x,y)(sin(x)+cos(y) myfhd2(pi/2,pi/6) ans=1.8660,每一個(gè)M文件第一行定義的文件
10、就是M文件主函數(shù),一個(gè)M文件只能包含一個(gè)主函數(shù),通常將M文件名和M文件主函數(shù)名設(shè)為一致。,在一個(gè)函數(shù)內(nèi)部可以定義一個(gè)或多個(gè)函數(shù),這種定義在其他函數(shù)內(nèi)部的函數(shù)被成為嵌套函數(shù)。,嵌套函數(shù)的書寫語法格式如下: function x=A(p1,p2) function y=B(p3) end end,嵌套函數(shù)的互相調(diào)用需要注意和嵌套的層次密切相關(guān),例:function A(x,y) %外層函數(shù)A(例如主函數(shù)) B(x,y); D(y); function B(x,y) %A的嵌套函數(shù)(B的父函數(shù)為A) C(x); D(y); function C(x) %B的嵌套函數(shù)(C的父函數(shù)為B) D(x); e
11、nd end,程序設(shè)計(jì)基礎(chǔ),實(shí)例1 matlab神經(jīng)網(wǎng)絡(luò)工具箱,程序設(shè)計(jì)基礎(chǔ),1.1 網(wǎng)絡(luò)數(shù)據(jù)對(duì)象的建立,net=newff(xm,xM,h1,hk,f1,fk); xm,xM分別為列向量(行數(shù)為變量個(gè)數(shù)),分別存儲(chǔ)每個(gè)變量的最小值和最大值。 h1,hk表示網(wǎng)絡(luò)各層的節(jié)點(diǎn)數(shù), 一共有k層. f1,fk表示各層使用的傳輸函數(shù),默認(rèn)為tansig,即Sigmoid函數(shù)。還可使用函數(shù)purelin,即f(x)=x。 其它可看matlab幫助: help newff,程序設(shè)計(jì)基礎(chǔ),1.2 網(wǎng)絡(luò)數(shù)據(jù)對(duì)象net的屬性,net.IW:來自輸入層的加權(quán)矩陣。BP網(wǎng)絡(luò)只用net.IW1,表示各個(gè)輸入變量對(duì)第1層
12、各節(jié)點(diǎn)的加權(quán)矩陣。 net.LW:來自中間層的加權(quán)向量。 BP網(wǎng)絡(luò)用net.IW2,1表示第1隱層個(gè)節(jié)點(diǎn)向下一層個(gè)節(jié)點(diǎn)的加權(quán)矩陣; net.IW3,2表示第2隱層向下一層的加權(quán)矩陣 net.b:各層的偏移。Net.b1表示第1隱層個(gè)節(jié)點(diǎn)的偏移,程序設(shè)計(jì)基礎(chǔ),net.trainParam.epochs:最大訓(xùn)練步數(shù)。不過當(dāng)誤差準(zhǔn)則滿足時(shí),即使沒達(dá)到此步數(shù)也停止訓(xùn)練。缺省為100。 net.trainParam.goad:網(wǎng)絡(luò)誤差準(zhǔn)則,當(dāng)誤差小于此準(zhǔn)則時(shí)停止訓(xùn)練,缺省為0。 net.trainFcn:訓(xùn)練算法。缺省為 trainlm,即Levenberg-Marquardt算法。還可使用train
13、gdx,即帶動(dòng)量的梯度下降算法;traincgf,即共軛梯度法。 其它可看matlab幫助:help-contents- Neural Network Toobox- Network Object Reference; help(net.trainFcn),程序設(shè)計(jì)基礎(chǔ),1.3 網(wǎng)絡(luò)的訓(xùn)練,net,tr,Y1,E=train(net,X,Y); net是函數(shù)newff建立的數(shù)據(jù)對(duì)象。 X為n*m的矩陣, n為輸入變量個(gè)數(shù), m為樣本數(shù)(即把每個(gè)樣本是一個(gè)列向量)。 Y為k*m的矩陣, k為數(shù)出變量個(gè)數(shù)。 tr返回訓(xùn)練的跟蹤信息, tr.epochs為訓(xùn)練步數(shù), tr.perf為各步目標(biāo)函數(shù)的值
14、。 Y1和E返回網(wǎng)絡(luò)最終的輸出和誤差。 訓(xùn)練結(jié)束后可以用plotperf(tr)來繪制目標(biāo)值隨著訓(xùn)練步數(shù)變化的曲線。,程序設(shè)計(jì)基礎(chǔ),1.4 網(wǎng)絡(luò)的泛化(預(yù)測(cè)),Y=sim(net,X); net是函數(shù)newff建立的數(shù)據(jù)對(duì)象。 X為n*m的矩陣, n為輸入變量個(gè)數(shù), m為樣本數(shù)(即把每個(gè)樣本是一個(gè)行向量)。 Y為k*m的矩陣, k為數(shù)出變量個(gè)數(shù)。,程序設(shè)計(jì)基礎(chǔ),2 例子:神經(jīng)網(wǎng)絡(luò)函數(shù)擬合(預(yù)測(cè)),試構(gòu)造合適的神經(jīng)網(wǎng)絡(luò)模型擬合如下數(shù)據(jù)點(diǎn),并預(yù)測(cè)x=10的值:,程序設(shè)計(jì)基礎(chǔ),matlab代碼,x=0:0.5:9.5; y=0, 0.43, 0.69, 0.74, 0.61, 0.36, 0.08, -0.17, -0.34, -0.4, -0.35, -0.23, -0.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年廣州南沙人力資源發(fā)展有限公司招聘編外工作人員備考題庫及1套參考答案詳解
- 2026年中國移動(dòng)興業(yè)分公司備考題庫及一套完整答案詳解
- 2026年吉安市吉水縣兩山資源控股有限公司面向社會(huì)公開招聘出納的備考題庫帶答案詳解
- 2026年南崗區(qū)哈西社區(qū)衛(wèi)生服務(wù)中心招聘備考題庫及完整答案詳解一套
- 2026年中煤浙江地質(zhì)集團(tuán)有限公司(中國煤炭地質(zhì)總局浙江煤炭地質(zhì)局)招聘備考題庫及完整答案詳解一套
- 2026年中國三冶集團(tuán)有限公司招聘備考題庫完整參考答案詳解
- 2026年復(fù)旦大學(xué)附屬華東醫(yī)院《老年醫(yī)學(xué)與保健》專職編輯招聘備考題庫及1套參考答案詳解
- 2026年東莞證券股份有限公司珠海人民東路證券營業(yè)部招聘備考題庫及一套參考答案詳解
- 2026年成都市龍泉驛區(qū)龍安第二幼兒園招聘備考題庫及1套參考答案詳解
- 2026年“重慶人力”所屬企業(yè)飛駛特公司招聘:派往重慶遠(yuǎn)通電子技術(shù)開發(fā)有限公司河南分公司備考題庫及一套完整答案詳解
- 30以內(nèi)加減法練習(xí)(每頁100題A4紙)
- 社會(huì)實(shí)踐-形考任務(wù)三-國開(CQ)-參考資料
- 盧氏縣橫澗壯溝鐵礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 醫(yī)護(hù)人員形象禮儀培訓(xùn)
- 中國的“愛經(jīng)”(一)-《天地陰陽交⊥歡大樂賦》
- 心房鈉尿肽基因敲除小鼠的繁殖和鑒定
- 母嬰護(hù)理職業(yè)道德課件
- 口腔頜面外科學(xué)(全)
- 安徽金軒科技有限公司 年產(chǎn)60萬噸硫磺制酸項(xiàng)目環(huán)境影響報(bào)告書
- 魔鬼理論之k線秘笈圖解課件
- GB/T 9163-2001關(guān)節(jié)軸承向心關(guān)節(jié)軸承
評(píng)論
0/150
提交評(píng)論