版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第4章MATLAB
程序設計陳文靜主要內(nèi)容M文件的建立、分類程序控制結構函數(shù)的設計(參數(shù)控制,注釋等)程序的調(diào)試(包括函數(shù)文件的調(diào)試)程序按照矩陣規(guī)則進行優(yōu)化4.1M文件M文件:由代碼(指令)組成,在MATLAB系統(tǒng)中解釋運行。M文件的后綴名為M。
M文件的分類
(1)命令式文件(腳本script)。(2)函數(shù)式文件(function)。4.1M文件兩類文件的區(qū)別命令式文件沒有輸入輸出參量,函數(shù)式文件帶帶參數(shù)。命令式文件運行中可以調(diào)用工作空間的數(shù)據(jù),運行中產(chǎn)生的所有變量為全局變量。函數(shù)式文件不能調(diào)用工作空間的數(shù)據(jù),運行中產(chǎn)生的所有變量為局部變量。命令式文件可以直接運行,函數(shù)式文件不能,只能調(diào)用。4.1M文件函數(shù)式文件(function)的構成
函數(shù)式文件(function)的構成function[w1,w2]=set_filter_w(I,kk)%設置濾波窗ifnargin<2kk=1;end……4.1M文件M文件的建立與打開可用任何文本編輯程序來建立和編輯常用matlab提供的編輯器建立/打開的方式:
a、主菜單
b、運行edit命令
c、命令按鈕,Newscript4.1M文件4.2程序控制結構三種程序控制結構順序結構選擇結構循環(huán)結構4.2程序控制結構順序結構指按照程序中語句的排列順序依次運行,直道程序的最后一句。一般涉及數(shù)據(jù)的輸入、數(shù)據(jù)的計算或處理、數(shù)據(jù)的輸出等。Clearall;clc;closeall;input(prompt)strResponse=input(prompt,'s')disp(x)4.2程序控制結構name='Alice';age=12;str=sprintf('%swillbe%dthisyear.',name,age);disp(str);A='Alice';age=12;str=fprintf('%swillbe%dthisyear.\n',name,age);Alicewillbe12thisyear.4.2程序控制結構Matlab與日期和時間有關的函數(shù)calendarX=clockY=todayT=tictocetimenowdate
datenumpausepause(3)延時3秒ctrl+c(終止程序運行)順序結構實例例:求一元二次方程ax2+bx+c=0的根,其中a,b,c的值由鍵盤輸入。
a=input(‘a(chǎn)=?’);b=input(‘b=?’);c=input(‘c=?’);x1=(-b+sqrt(b.^2-4*a*c))/(2*a);x2=(-b-sqrt(b.^2-4*a*c))/(2*a);
disp([‘x1=‘,num2str(x1),‘x2=‘,num2str(x2)])或p=[abc];x=roots(p)4.2程序控制結構三種程序控制結構順序結構選擇結構循環(huán)結構4.2程序控制結構if結構1)單分支If結構2)雙分支If結構if-else-end3)多分支If結構If…elseif…else…endswith結構
try結構
選擇結構4.2程序控制結構1)單分支ifif條件語句組
end
if結構2)雙分支ifif條件語句組1else語句組2end3)多分支ifif條件1語句組1elseif條件2語句組2……elseif條件m語句組melse語句組nend例:計算分段函數(shù):例:多分支條件語句例、輸入一個字符,若為大寫字母,則輸出其對應的小寫字母;若為小寫字母,則輸出其對應的大寫字母;若為數(shù)字字符,則輸出其對應的數(shù)值,其它為原樣輸出。disp(abs(c)-abs(‘0’))switch語句switch表達式
case表達式1
語句組1case表達式2
語句組2………
case表達式m
語句組motherwise
語句nend4.2程序控制結構選擇結構switch語句switch表達式
case表達式1
語句組1case{表達式2,表達式3,…表達式m}
語句組2….otherwise
語句nend4.2程序控制結構選擇結構4.2程序控制結構…switch(result)case52disp('resultis52')case{53,78}disp('resultis52or78')End例使用switch語句判斷鍵盤輸入值并做出相應提示。例使用switch語句對顧客購買的商品進行打折銷售try語句try
語句組1catch
語句組2end例、矩陣乘法的規(guī)則,先求兩矩陣的乘積,若出錯則自動轉去求兩矩陣的點積。A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;end4.2程序控制結構試探結構Errorusing*Innermatrixdimensionsmustagree.
4.2程序控制結構三種程序控制結構順序結構選擇結構循環(huán)結構循環(huán)結構硬循環(huán)語句(for……end)條件循環(huán)語句(while…….end)4.2程序控制結構
for循環(huán)變量=表達式1:表達式2:表達式3
循環(huán)體語句
end例、利用循環(huán)語句生成方波A,要求方波序列長度為100,方波個數(shù)為10個。A0=[0,0,0,0,0,1,1,1,1,1];A=[];fori=1:10A=[AA0];endfor循環(huán)結構[B1,B]=meshgrid(A0);C=reshape(B,1,100);for循環(huán)結構Fori=valArray…endfors=[1,5,8,17]disp(s)end15817a=[1,3,5,7];>>fori=as(i)=i;ends=1030507例:輸出100~999之間的水仙花數(shù)例:編寫程序,求Fibnacci數(shù)列各項求:n=input(‘n=‘);
y=0;fori=1:ny=y+1/i.^2;enddisp(y)n=input(‘n=‘);
x=1:n;y=1./i.^2sum(y)disp(y)例:求定積分設求例:求定積分設求quad(fun,a,b)>>F=@(x)exp(-0.5*x).*sin(x+pi/6);>>Q=quad(F,0,3*pi)Q=0.9008條件循環(huán)語句(while-end)當--就—
結構while條件循環(huán)體語句
endWhile循環(huán)結構條件循環(huán)體語句YNWhile循環(huán)例:求階乘大于或等于99^99的最小整數(shù)。N=1;while(prod(1:N)<99^99)N=N+1;endm=1;while(sum(1:N)<=10000)m=m+1;end>>mm=141求:
例:從鍵盤輸入若干個數(shù),當輸入0時,結束。求這些數(shù)的和與平均值While循環(huán)例break用于終止循環(huán)的執(zhí)行,即程序將跳出循環(huán)。continue
控制跳出循環(huán)體中的某些語句,即跳過循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。例、求[100,200]之間第一個能被21整除的數(shù)forn=100:200ifrem(n,21)~=0continueendbreakend終止循環(huán)forn=100:200ifrem(n,21)==0breakendendx=100:200;a=find(rem(x,21)==0,1);x(a)return使正在執(zhí)行的函數(shù)正常退出??梢杂糜谡:蛷娭平Y束函數(shù)的運行例、求[100,200]之間第一個能被21整除的數(shù)forn=100:200ifrem(n,21)==0returnendend[x,y]=meshgrid(1:256);z=2-((x-128).^2+(y-128).^2)/128^2;mesh(z);
a=z;a(a<=1)=NaN;[M,N]=size(a);fori=1:Mforj=1:Nifa(i,j)<=1a(i,j)=NaN;endendend循環(huán)的嵌套例:找出1:100之間的全部素數(shù)clearallclcN=100;p=2:N;fori=2:sqrt(N)n=find(rem(p,i)==0&p~=i);p(n)=[];enddisp(p)例:找出1:100之間的全部素數(shù)寫出下列程序的輸出結果s=0;a=[12,13,14;15,16,17;181920;21,22,23]fork=aforj=1:4ifrem(k(j),2)~=0s=s+k(j);endendends=108第三節(jié)函數(shù)文件函數(shù)文件的基本結構Function[輸出參量]=函數(shù)名(輸入?yún)⒘?
注釋說明函數(shù)體語句說明:1、函數(shù)調(diào)用時,不是函數(shù)名而是函數(shù)文件名。2、注釋用%開頭,第一注釋行及之后的連續(xù)行3、return
函數(shù)文件的基本結構Function[輸出參量]=函數(shù)名(輸入?yún)⒘?
注釋說明函數(shù)體語句說明:1、函數(shù)調(diào)用時,不是函數(shù)名而是函數(shù)文件名。2、注釋用%開頭,第一注釋行及之后的連續(xù)行3、return第三節(jié)函數(shù)文件
函數(shù)調(diào)用:普通調(diào)用[輸出參量]=函數(shù)名(輸入?yún)⒘?function[rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);調(diào)用:
[rho,the]=tran(x,y);第三節(jié)函數(shù)文件functionA=myhilb(m,n)ifnargout>1,error(‘Toomanyoutputargument’);endifnargin==1,n=m;elseifnargin==0|nargin>2,error(‘wrongnumberofinputargument’);endfori=1:mforj=1:nA(i,j)=1/(i+j-1);endend第三節(jié)函數(shù)文件調(diào)用:
A=myhilb(3,4);
函數(shù)調(diào)用:嵌套調(diào)用函數(shù)可以嵌套調(diào)用,如遞歸例、利用函數(shù)的遞歸調(diào)用,求n的階乘。functionf=myfactor(n)ifn<=1f=1;elsef=myfactor(n-1)*n;end第三節(jié)函數(shù)文件函數(shù)調(diào)用舉例用for循環(huán)編程實現(xiàn)對行向量進行任意重新排列。建立函數(shù):myrndprm調(diào)用myrndprm>>x=1:10;>>y=myrndprm(x)y=46513278910
函數(shù)參數(shù)的可調(diào)性
nargin:numberoffunctioninputarguments
nargout:numberoffunctionoutputarguments
全局變量與局部變量
global變量名子函數(shù)私有函數(shù)
private目錄下嵌套函數(shù)第三節(jié)函數(shù)文件nargin和nargout
調(diào)節(jié)輸入和輸出參數(shù),一個函數(shù)可完成多種功能。functionfout=charry(a,b,c);Ifnargin==1fout=a;elseifnargin==2fout=a+b;elseifnargin==3fout=(a*b*c)/2;end函數(shù)參數(shù)的可調(diào)性global變量名缺點:破壞了函數(shù)對變量的封裝,降低了程序的可讀性。functionf=wadd(x,y)globalalphabetaf=alpha*x+beta*y;運行時
globalalphabetaalpha=1;beta=2;s=wadd(1,2);全局變量與局部變量子函數(shù)(subfunction)一個M文件可以包括多個函數(shù)第一個出現(xiàn)的主函數(shù),其它的為子函數(shù)主函數(shù)可以在M文件的外部調(diào)用子函數(shù)只能被主函數(shù)和同一個M文件中的其它子函數(shù)調(diào)用因此,主函數(shù)必須在最上方,子函數(shù)的排列順序可以任意子函數(shù)function[avg,med]=mystate(u)n=length(u);avg=mean(u,n);med=median(u,n);functiona=mean(v,n)a=sum(v)/n;functionm=median(v,n)w=sort(v);ifrem(n,2)==1m=w((n+1)/2);elsem=(w(n/2)+w(n/2+1))/2;end嵌套函數(shù)嵌套:在函數(shù)內(nèi)部定義其它函數(shù)嵌套函數(shù)必須用end結尾functiontestfunclc;x=5;y=testfun1(x);functionz=testfun1(x)z=2*x;endyend1.語法錯誤2.邏輯錯誤(編程失誤)調(diào)式方法:(1)命令行,單獨運行部分命令,根據(jù)結果判斷。(2)設置斷點來判斷(3)
return的靈活應用第四節(jié)程序調(diào)試
1.語法錯誤
能很好判斷或檢查出語法錯誤
2.邏輯錯誤(編程失誤)
matlab基本不能檢查到邏輯錯誤第四節(jié)程序調(diào)試2.邏輯錯誤(編程失誤)(1)命令行,單獨運行部分命令,根據(jù)結果判斷。(2)設置斷點來判斷_debug
k>>變量名,查看。變量的鼠標觀測法(3)利用鍵盤控制,如命令pause\keyboard\return第四節(jié)程序調(diào)試Debug詳解Debug工具欄中部分子項的功能1、step
執(zhí)行M文件的當前行,即單步執(zhí)行2、stepin
如果當前行調(diào)用了另外一個函數(shù),則深入被調(diào)用的函數(shù)內(nèi)部執(zhí)行3、stepout
在當前函數(shù)內(nèi)部,完成剩余行的執(zhí)行,并退出函數(shù)4、continue
完成當前M文件的運行5、exitdebugmodemy_demo_func(1:64)4.3.5子函數(shù)4.3.5子函數(shù)第一步第二步第三步第四步第五步1.代碼運行的計時方法整段程序代碼的計時計算tic與toc之間的時間。也可以用etime(t1,t2)
計算t1,t2之間的時間差來完成上述功能。也可以用cputime變量來完成上述功能。五、程序的優(yōu)化設計1.代碼運行的計時方法整段程序代碼的計時計算tic與toc之間的時間。
tic……toc五、程序的優(yōu)化設計1.代碼運行的計時方法也可以用etime(t1,t2)
計算t1,t2之間的時間差來完成上述功能。t=clock;fft(x);etime(clock,t)五、程序的優(yōu)化設計1.代碼運行的計時方法也可以用cputime變量來完成上述功能。
t=cputime;your_operation;cputime-t五、程序的優(yōu)化設計編程技巧(1)盡量避免使用循環(huán)。盡量使用向量化的運算。多重循環(huán),次數(shù)多的循環(huán)在內(nèi)。(2)矩陣維數(shù)預先定義。(3)優(yōu)先考慮內(nèi)置函數(shù)。(4)算法的優(yōu)化。作業(yè)1、編寫函數(shù),應用cos(x)的麥克勞林展開式,計算cos(x)的值,并將計算結果于matlab自帶的cos函數(shù)進行比較。提示采用while…end條件循環(huán)。2、產(chǎn)生20個隨機整數(shù),輸出其中小于平均值的偶數(shù)。3、按照循環(huán)結構計算s=1+2+22+…2n4、編寫函數(shù)文件,用于求兩個矩陣的乘積和點積,要求若能同時進行矩陣乘和點積,則輸出兩個值。例,產(chǎn)生方波A,要求方波序列長度為100,方波個數(shù)為10個。
A=[0,0,0,0,0,1,1,1,1,1];B=[A,A,A,A,A,A,A,A,A,A];或[B1,B]=meshgrid(A);C=reshape(B,1,100);
在matlab中,矩陣元素按列存儲,即首先存儲矩陣的第一列元素,然后存儲第二列,…,reshape只是改變原矩陣的行數(shù)和列數(shù),不改變矩陣個數(shù)及原來的存儲結構練習1.從鍵盤上輸入4位數(shù),按照下列規(guī)則加密輸出:每位數(shù)字都加上7,然后用和除以1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 百貨業(yè)態(tài)的營銷管理目錄課件
- 2024年版智能穿戴設備生產(chǎn)與銷售合同
- 市政工程勞務分包協(xié)議
- 2024年版高清影視內(nèi)容分銷合同
- 2024年標準化礦山開采合作合同一
- 旅游度假村國有土地租賃合同
- 體育館電梯保養(yǎng)協(xié)議
- 汽車電子工程師聘用合同模板
- 2025消防清包工價格合同消防包工合同
- 休閑娛樂場所租賃協(xié)議
- 《基于Halbach分布的初級永磁直線電機的電磁設計與分析》
- 光伏發(fā)電項目管理述職報告
- 2024年辦公室檔案管理工作總結模版(3篇)
- 2024-2025學年高一【數(shù)學(人教A版)】數(shù)學建?;顒?1)-教學設計
- 2025年小學五年級數(shù)學(北京版)-分數(shù)的意義(三)-3學習任務單
- 生物人教版(2024版)生物七年級上冊復習材料
- 中華人民共和國野生動物保護法
- 數(shù)字化轉型成熟度模型與評估(DTMM)國家標準解讀 2024
- 河南省名校八校聯(lián)考2024-2025學年高二上學期期中模擬考試語文試題(含答案解析)
- 第五單元觀察物體(一) (單元測試)-2024-2025學年二年級上冊數(shù)學 人教版
- 【初中生物】脊椎動物(魚)課件-2024-2025學年人教版(2024)生物七年級上冊
評論
0/150
提交評論