Matlab計(jì)算與仿真_第1頁(yè)
Matlab計(jì)算與仿真_第2頁(yè)
Matlab計(jì)算與仿真_第3頁(yè)
Matlab計(jì)算與仿真_第4頁(yè)
Matlab計(jì)算與仿真_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、MatlabMatlab計(jì)算與仿真計(jì)算與仿真n第八講回顧第八講回顧nMatlab編程編程-III - 變量查詢變量查詢 - 匿名函數(shù)匿名函數(shù) - 參數(shù)交互輸入?yún)?shù)交互輸入 - Matlab程序調(diào)試程序調(diào)試 - 語(yǔ)言結(jié)構(gòu)與調(diào)試函數(shù)語(yǔ)言結(jié)構(gòu)與調(diào)試函數(shù)第九講提綱第九講提綱MatlabMatlab計(jì)算與仿真計(jì)算與仿真第八講回顧第八講回顧n函數(shù)的定義及申明函數(shù)的定義及申明 - 使用方式使用方式: 調(diào)用調(diào)用/嵌套嵌套 - 協(xié)作方式協(xié)作方式: 主函數(shù)主函數(shù)/子函數(shù)子函數(shù)/嵌套函數(shù)嵌套函數(shù) - 內(nèi)部變量?jī)?nèi)部變量: 生存周期控制生存周期控制n控制語(yǔ)句控制語(yǔ)句 - if /if-else/if-elseif-el

2、se - switch-case - for/while MatlabMatlab計(jì)算與仿真計(jì)算與仿真第八講回顧第八講回顧 (續(xù)續(xù)) if 語(yǔ)句一般形式語(yǔ)句一般形式 if logical_expression block of statements elseif logical_expression block of statements else block of statements endMatlabMatlab計(jì)算與仿真計(jì)算與仿真第八講回顧第八講回顧 (續(xù)續(xù)) switch 語(yǔ)句語(yǔ)句 一般形式一般形式 switch expression case value1, block of st

3、atements case value2, block of statements . otherwise, block of statements endMatlabMatlab計(jì)算與仿真計(jì)算與仿真第八講回顧第八講回顧 (續(xù)續(xù)) - 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 根據(jù)條件重復(fù)執(zhí)行程序指令或模塊根據(jù)條件重復(fù)執(zhí)行程序指令或模塊 for 語(yǔ)句語(yǔ)句 % % 計(jì)數(shù)循環(huán)計(jì)數(shù)循環(huán) 一般形式一般形式 for index = expression block of statements endMatlabMatlab計(jì)算與仿真計(jì)算與仿真第八講回顧第八講回顧 (續(xù)續(xù)) while 語(yǔ)句語(yǔ)句 一般形式一般形式 while e

4、xpression block of statements endMatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))while 語(yǔ)句實(shí)例語(yǔ)句實(shí)例: newton法計(jì)算法計(jì)算 while abs(rold-r) delta rold = r; r = 0.5*(rold + x/rold); end12newoldoldxrrrxMatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))循環(huán)中斷控制循環(huán)中斷控制: while 語(yǔ)句實(shí)例語(yǔ)句實(shí)例 x = rand(1,10); k = 1; while k0.8 break end k = k + 1; en

5、dMatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))函數(shù)返回控制函數(shù)返回控制: while 語(yǔ)句實(shí)例語(yǔ)句實(shí)例 x = rand(1,10); k = 1; while k0.8 return end k = k + 1; endMatlabMatlab計(jì)算與仿真計(jì)算與仿真綜合練習(xí)綜合練習(xí): 利用級(jí)數(shù)展開(kāi)近似計(jì)算利用級(jí)數(shù)展開(kāi)近似計(jì)算 sin - 提示提示 sin 的級(jí)數(shù)展開(kāi)為的級(jí)數(shù)展開(kāi)為 - m-函數(shù)實(shí)例函數(shù)實(shí)例 1: function s=powersin(x); 2: % POWERSIN. Power series for sin(x). 3: % POWERSIN

6、(x) tries to compute sin(x) from a power series.Matlab編程編程 (續(xù)續(xù))357sin3!5!7!xxxxxMatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù)) 4: s=0; 5: t=x; 6: n=1: 7: while abs(t) eps 8: s=s+t; 9: t=-x.2/(n+1)*(n+2).*t; 10: n=n+2; 11: endMatlabMatlab計(jì)算與仿真計(jì)算與仿真n綜合練習(xí)七: 生命周期曲線 - 提示: 生理-23天; 情感-28天; 智力-33天 function biorythm(

7、mybirthday) t0=datenum(mybirthday); t1=fix(now); t=(t1-28):1:(t1+28); t=t; y=100*sin(2*pi*(t-t0)/23) sin(2*pi*(t-t0)/28) sin(2*pi*(t-t0)/33);Matlab編程編程 (續(xù)續(xù))MatlabMatlab計(jì)算與仿真計(jì)算與仿真 plot(t,y(:,1),t,y(:,2),-,t,y(:,3),.-,t1 t1,-100 100,k:); datetick(x,dd/mm,keeplimits); axis tight; title(mybirthday); leg

8、end(Physical,Emotional,Intellectual); xlabel(timedd/mm); ylabel(biorythm index %)Matlab編程編程 (續(xù)續(xù))MatlabMatlab計(jì)算與仿真計(jì)算與仿真- 關(guān)于函數(shù)變量與參數(shù)傳遞關(guān)于函數(shù)變量與參數(shù)傳遞 輸入輸入(輸出輸出)變量查詢函數(shù)變量查詢函數(shù): nargin(nargout) 功能功能: 返回函數(shù)的輸入返回函數(shù)的輸入(輸出輸出)個(gè)數(shù)個(gè)數(shù) 應(yīng)用應(yīng)用: 根據(jù)變量個(gè)數(shù)根據(jù)變量個(gè)數(shù), 選取模塊執(zhí)行選取模塊執(zhí)行 function c = testarg1(a, b) if (nargin = 1) c = a . 2

9、; elseif (nargin = 2) c = a * b; endMatlab編程編程 (續(xù)續(xù))MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù)) - 變量的傳遞變量的傳遞 輸入輸入(輸出輸出)變量查詢函數(shù)變量查詢函數(shù): varargin(varargout) 功能功能: 返回由函數(shù)的輸入返回由函數(shù)的輸入(輸出輸出)變量的元胞數(shù)組變量的元胞數(shù)組 元胞元胞: Matlab的數(shù)據(jù)類型的數(shù)據(jù)類型, 由由 標(biāo)識(shí)標(biāo)識(shí) 中可以是算術(shù)中可以是算術(shù)/邏輯邏輯/字符字符/結(jié)構(gòu)數(shù)據(jù)類型結(jié)構(gòu)數(shù)據(jù)類型, 例如例如 A(1,1) = 1 4 3; 0 5 8; 7 2 9; A(1,2)

10、= Anne Smith; A(2,1) = 3+7i; A(2,2) = -pi:pi/10:pi;MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù)) - 變量的傳遞變量的傳遞(續(xù)續(xù)): 替代列表替代列表 注意注意: 元胞數(shù)組的引用元胞數(shù)組的引用: function testvar(varargin) for k = 1:length(varargin) x(k) = varargink(1); % Cell array indexing y(k) = varargink(2); end xmin = min(0,min(x); ymin = min(0,min(y)

11、; axis(xmin fix(max(x)+3 ymin fix(max(y)+3) plot(x,y)MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))- - 函數(shù)句柄函數(shù)句柄 定義定義: 指向函數(shù)的指向函數(shù)的Matlab值值, 基本格式基本格式 fhandle=functionname fhandle可以作為變量傳遞可以作為變量傳遞 功能功能: 用于函數(shù)的創(chuàng)建和訪問(wèn)用于函數(shù)的創(chuàng)建和訪問(wèn)(運(yùn)算運(yùn)算) sqr = (x) x.2 % 匿名函數(shù)匿名函數(shù) trigFun = sin, cos, tan plot(trigFun2(-pi:0.01:pi)MatlabMat

12、lab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))函數(shù)句柄的引用格式函數(shù)句柄的引用格式 fhandle(arg1, arg2, ., argn) 實(shí)例實(shí)例: fhandle指向指向函數(shù)的曲線繪制函數(shù)的曲線繪制 function x = plotFHandle(fhandle, data) plot(data, fhandle(data) 引用引用: 繪制繪制sin函數(shù)的曲線函數(shù)的曲線 plotFHandle(sin,-pi:0.01:pi)MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù)) 匿名函數(shù)匿名函數(shù) 創(chuàng)建匿名函數(shù)創(chuàng)建匿名函數(shù) fhandle = (argl

13、ist) expr 創(chuàng)建實(shí)例創(chuàng)建實(shí)例 sumxy = (x, y) (x + y) 應(yīng)用操作應(yīng)用操作 sumxy(5, 7) MatlabMatlab計(jì)算與仿真計(jì)算與仿真 匿名函數(shù)元胞組實(shí)例匿名函數(shù)元胞組實(shí)例 A = (x)x.2, (y)y+10, (x,y)x.2+y+10 A = (x)x.2 (y)y+10 (x,y)x.2+y+10 A1(4) + A2(7) ans = 33 A3(4, 7) ans = 33 Matlab編程編程 (續(xù)續(xù))MatlabMatlab計(jì)算與仿真計(jì)算與仿真參數(shù)化的匿名函數(shù)參數(shù)化的匿名函數(shù) a = 1.3; b = .2; c = 30; parabol

14、a = (x) a*x.2 + b*x + c; fplot(parabola, -25 25) % fplot(x) a*x.2 + b*x + c, -25 25) a = -3.9; b = 52; c = 0; fplot(parabola, -25 25) 提示提示: fplot 繪制句柄指向函數(shù)的圖形繪制句柄指向函數(shù)的圖形Matlab編程編程 (續(xù)續(xù))MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))多重匿名函數(shù)的使用多重匿名函數(shù)的使用 問(wèn)題問(wèn)題: 計(jì)算計(jì)算 提示提示: quad 是是 matlab 缺省的積分計(jì)算函數(shù)缺省的積分計(jì)算函數(shù) 回憶回憶: look

15、for quad g = (c) (quad(x) (x.2 + c*x + 1), 0, 1); g(2)120( )1 dg cxcxx(2)gMatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))用戶參數(shù)交互輸入用戶參數(shù)交互輸入 參數(shù)的作用參數(shù)的作用: 使程序更加通用靈活使程序更加通用靈活 參數(shù)輸入的主要模式參數(shù)輸入的主要模式 - input 函數(shù)輸入?yún)?shù)函數(shù)輸入?yún)?shù) - keyboard函數(shù)函數(shù) (鍵盤模式鍵盤模式) - menu 函數(shù)函數(shù) (菜單模式菜單模式) MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))鍵盤輸入模式鍵盤輸入模式 基本

16、格式基本格式: v= input( 顯示的提示信息顯示的提示信息 ); 功能實(shí)現(xiàn)功能實(shí)現(xiàn): 向用戶顯示提示信息向用戶顯示提示信息 將用戶的輸入賦給將用戶的輸入賦給v 使用實(shí)例使用實(shí)例 freq=input(frequence is) 結(jié)果結(jié)果 frequence is (等待鍵盤輸入等待鍵盤輸入, 回車確認(rèn)輸入完成回車確認(rèn)輸入完成 ) MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))鍵盤控制模式鍵盤控制模式 基本格式基本格式: keyboard; 功能實(shí)現(xiàn)功能實(shí)現(xiàn): 臨時(shí)終止程序執(zhí)行臨時(shí)終止程序執(zhí)行 將控制權(quán)交給命令窗口將控制權(quán)交給命令窗口 利用回車結(jié)束鍵盤控制利用回

17、車結(jié)束鍵盤控制 使用實(shí)例使用實(shí)例 查詢查詢/修改函數(shù)工作空間的變量修改函數(shù)工作空間的變量 建立新的函數(shù)空間的變量建立新的函數(shù)空間的變量MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))菜單輸入模式菜單輸入模式 基本格式基本格式: item_no=menu(title,item1,itemn); 功能實(shí)現(xiàn)功能實(shí)現(xiàn): 顯示菜單顯示菜單 用戶選擇按鈕用戶選擇按鈕 返回菜單序號(hào)返回菜單序號(hào) 使用實(shí)例使用實(shí)例 s=menu(signal,red,green,yellow) 可結(jié)合選擇控制語(yǔ)句使用可結(jié)合選擇控制語(yǔ)句使用MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程

18、 (續(xù)續(xù))程序設(shè)計(jì)技術(shù)程序設(shè)計(jì)技術(shù) 循環(huán)向量化計(jì)算模式循環(huán)向量化計(jì)算模式 目的目的: 向量計(jì)算替代循環(huán)模式向量計(jì)算替代循環(huán)模式 實(shí)例實(shí)例: tic tic for t=0:0.01:100 t=0.0:0.01:100 i=i+1; y(i)=sin(t) y=sin(t) end toc toc 耗時(shí)耗時(shí)7.58 耗時(shí)耗時(shí)0.01 MatlabMatlab計(jì)算與仿真計(jì)算與仿真Matlab編程編程 (續(xù)續(xù))程序設(shè)計(jì)技術(shù)程序設(shè)計(jì)技術(shù)(續(xù)續(xù)) 陣列預(yù)分配空間陣列預(yù)分配空間 目的目的: 避免循環(huán)過(guò)程空間分配的耗時(shí)避免循環(huán)過(guò)程空間分配的耗時(shí) 實(shí)例實(shí)例: y(k)=0.75y(k-1)-0.125y(k-2)+2u(k) clear all,tic T=0.001; t=0:T:16 u=sin(2*pi*t); % y=zeros(size(u) y(1)=2*u(1); y(2)=0.75*y(1)+2*u(2);耗時(shí)耗時(shí)0.562(%)/

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論