010.自定義函數(shù)(最新整理)_第1頁(yè)
010.自定義函數(shù)(最新整理)_第2頁(yè)
010.自定義函數(shù)(最新整理)_第3頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、010. 自定義函數(shù)函數(shù)是編程的核心概念之一,是能夠完成相對(duì)獨(dú)立功能的代碼封裝成的模塊。在主程序中通過(guò)函數(shù)名和實(shí)參調(diào)用它,通過(guò)接口(即函數(shù)的輸入、輸出參數(shù))來(lái)實(shí)現(xiàn)“通訊”。所以在調(diào)用函數(shù)時(shí),你只要知道【被調(diào)用的函數(shù)是用來(lái)做什么的】,以及【如何對(duì)應(yīng)它的輸入、輸出參數(shù)】就行了。關(guān)于【形參(形式參數(shù))】和【實(shí)參(實(shí)際參數(shù))】:函數(shù)定義中的參數(shù)就是形參,只是用來(lái)限定函數(shù)所接收的數(shù)據(jù)類(lèi)型的, “泛指該數(shù)據(jù)類(lèi)型下任一元素”;函數(shù)調(diào)用中的參數(shù)就是實(shí)參,是“特指的具體數(shù)值”來(lái)代入函數(shù)體執(zhí)行代碼。例如(c 語(yǔ)言):int max(int x, int y) if (x = y)return x; elseret

2、urn y; int a = 5, b = 4; max(2,3);max(a,b);其中,x,y 是形參,2, 3,a, b 是實(shí)參。使用函數(shù)的好處:增加程序的可讀性(函數(shù)可獨(dú)立放在主程序之外)和重用性(一個(gè)函數(shù)可以多次被調(diào)用)。matlab 的自定義函數(shù),常用的有:m 文件定義函數(shù)、inline(內(nèi)聯(lián))函數(shù)、匿名函數(shù)。一、 m 文件定義函數(shù)(m-函數(shù))1. 依次 file-new-function,會(huì)彈出一個(gè)新編輯窗口,包含代碼如下:function output_args = untitled2( input_args )% untitled2 summary of this funct

3、ion goes here% detailed explanation goes hereend這是一個(gè) m-函數(shù)的模板。function:表示編寫(xiě)的是一個(gè)函數(shù)。output_args: 輸出參數(shù),即函數(shù)的返回值,各返回值間用逗號(hào)隔開(kāi)。(不需要像 c 語(yǔ)言那樣,通過(guò) return 到返回值來(lái)賦值,outp_args 相應(yīng)的參數(shù)可以直接使用)input_args: 輸入?yún)?shù),各參數(shù)之間用逗號(hào)隔開(kāi)。untitled: 所定義的函數(shù)名。注意:函數(shù)名和 m 文件名需要保持一致。end 表示此函數(shù)編輯完畢。函數(shù)的基本結(jié)構(gòu):function 輸出形參表: output1, output1, ., outp

4、tn = 函數(shù)名 輸入形參表: input1, input2, . , inputn注釋說(shuō)明部分 函數(shù)體代碼部分end說(shuō)明:(1) 在調(diào)用函數(shù)時(shí)要使用編寫(xiě)此函數(shù)的文件名,一般函數(shù)名和文件名保持一致。(2) 函數(shù)中遇 return 語(yǔ)句時(shí),退出函數(shù)體,此函數(shù)調(diào)用結(jié)束。(3) 函數(shù)調(diào)用的一般格式是: 輸出實(shí)參表=函數(shù)名(輸入實(shí)參表)(4) 在調(diào)用函數(shù)時(shí),matlab 用兩個(gè)永久變量 nargin 和nargout 分別記錄調(diào)用該函數(shù)時(shí)的輸入實(shí)參和輸出實(shí)參的個(gè)數(shù)。只要在函數(shù)文件中包含這兩個(gè)變量,就可以準(zhǔn)確地知道該函數(shù)文件被調(diào)用時(shí)的輸入輸出參數(shù)個(gè)數(shù),從而決定函數(shù)如何進(jìn)行處理。2. 函數(shù)體完成函數(shù)的具體

5、功能,是根據(jù)具體需要編寫(xiě)的。通過(guò)使用“函數(shù)的輸入?yún)?shù)”、“自定義變量”(注意 matlab 的變量不用定義,賦值即可)、“流程控制結(jié)構(gòu)”來(lái)實(shí)現(xiàn)。3. 子函數(shù)函數(shù)體里面也可以定義一個(gè)或幾個(gè)函數(shù),稱(chēng)為子函數(shù)。注意: 子函數(shù)只能存在于主函數(shù)體內(nèi),不獨(dú)立存在; 子函數(shù)在主函數(shù)體內(nèi)的位置可以任意,不影響使用; 子函數(shù)只能被主函數(shù)以及其他位于同一主函數(shù)體下的子函數(shù)調(diào)用,但子函數(shù)“句柄”(見(jiàn)下文)例外。4. 函數(shù)調(diào)用定義完 m 文件的函數(shù),放置在 matlab 的當(dāng)前路徑之下(或修改當(dāng)前路徑為 m-函數(shù)文件所在路徑),然后就和使用 matlab 自帶的函數(shù)一樣,直接在命令窗口使用該函數(shù)就是調(diào)用它了。調(diào)用函數(shù)

6、時(shí), 需要知道函數(shù)是干嘛的,以及它的輸入?yún)?shù)、輸出參數(shù)。例 1 函數(shù)(子函數(shù))定義與調(diào)用示例,求向量的最大、最小值。編寫(xiě) m-函數(shù)文件:max_min_values.m function max,min = max_min_values(x) max=mysubfun1(x);min=mysubfun2(x);function r=mysubfun1(x) %子函數(shù) 1 x1=sort(x, descend);r=x1(1);endfunction r=mysubfun2(x) %子函數(shù) 2 x1=sort(x);r=x1(1);end end命令窗口:a = 34,56,23,11,2,39

7、;m,n=max_min_values(a)運(yùn)行結(jié)果:m=56n=2二、 內(nèi)聯(lián)函數(shù)使用 inline()可以讓用戶(hù)編寫(xiě)簡(jiǎn)單的函數(shù)而不需要?jiǎng)?chuàng)建 m 文件。語(yǔ)法格式:f=inline(函數(shù)表達(dá)式, 變量 1, 變量 2, )調(diào)用方式:y=f(實(shí)參列表)注意:實(shí)參列表順序應(yīng)與 inline()定義中形參(即變量名)的順序一致。注:這種函數(shù)定義方式是將它作為一個(gè)內(nèi)部函數(shù)調(diào)用。好處是, 它是基于 matlab 的數(shù)值運(yùn)算內(nèi)核的,所以它的運(yùn)算速度較快,程序效率更高。缺點(diǎn)是,該方法只能對(duì)數(shù)值進(jìn)行代入,不支持符號(hào)代入, 且對(duì)定義后的函數(shù)不能進(jìn)行求導(dǎo)等符號(hào)運(yùn)算。例 2 內(nèi)聯(lián)函數(shù)示例。f=inline(x2+y,

8、x,y) z=f(2,3)運(yùn)行結(jié)果:f=inline function:f(x,y) = x2 + yz=7三、匿名函數(shù)匿名函數(shù)具有 inline()的所有優(yōu)點(diǎn),并且效率比 inline 函數(shù)高, 類(lèi)似于 c 語(yǔ)言的宏。一旦定義了匿名函數(shù),使用方式和 inline 函數(shù)類(lèi)似。使用 matlab 函數(shù)句柄操作符,可以定義指向 matlab 內(nèi)置函數(shù)和用戶(hù)自定義函數(shù)的函數(shù)句柄,函數(shù)句柄也可以像函數(shù)一樣的使用。注:函數(shù)句柄,可以理解成函數(shù)的“代號(hào)”,適用于函數(shù)名比較長(zhǎng),用“代號(hào)”代替函數(shù)操作更方便。例 3匿名函數(shù)示例。f=(x,y)x2+y2;f(2,3) a=1:5;b=5:-1:1; c=0.1

9、:0.1:0.5;運(yùn)行結(jié)果:ans=13ans=g=(x,y)x.2+y.2+c; g(a,b)26.100020.200018.300020.400026.5000四、其他函數(shù)定義1. syms+subs:用 syms 定義一個(gè)符號(hào)表達(dá)式,用 subs 調(diào)用:該方法的優(yōu)點(diǎn)是,可以用符號(hào)進(jìn)行替換;缺點(diǎn)是,由于使用符號(hào)運(yùn)算內(nèi)核,運(yùn)算速度會(huì)大大降低。例如,syms f x;% 定義符號(hào)變量f=1/(1+x2);% 定義符號(hào)表達(dá)式subs(f,x,y2) % 調(diào)用函數(shù)表達(dá)式,用 y2 替換變量 x運(yùn)行結(jié)果:ans =141 + y2. 字符串+subs直接定義一個(gè)字符串,用 subs 命令調(diào)用。例如

10、:f=1/(1+x2);z=subs(f,x,2)g=subs(f,x,y2)運(yùn)行結(jié)果:z=1/5g=141 + y注:優(yōu)點(diǎn)是,占用內(nèi)存最少,定義格式方面自由。缺點(diǎn)是,無(wú)法對(duì)字符進(jìn)行符號(hào)轉(zhuǎn)化。補(bǔ)充: matlab 的流程控制語(yǔ)句(編程語(yǔ)言基本都通用)(一)分支結(jié)構(gòu)(1) if 語(yǔ)句if 條件 1matlab 語(yǔ)句 1;elseif 條件 2matlab 語(yǔ)句 2;.elsematlab 語(yǔ)句 n; end注意: 判斷條件不用加小括號(hào);結(jié)尾必須用 end 來(lái)標(biāo)識(shí) if 語(yǔ)句結(jié)束; 某個(gè)邏輯條件為真,則執(zhí)行且只執(zhí)行下一條 matlab 語(yǔ)句(以“ ; ”結(jié)尾的)或 中間的程序塊。(2) switc

11、h 語(yǔ)句(與 if 語(yǔ)句類(lèi)似)switch 表達(dá)式case 表達(dá)式 1matlab 語(yǔ)句 1case 表達(dá)式 2matlab 語(yǔ)句 2.case 表 達(dá) 式 n matlab 語(yǔ)句 notherwisematlab 語(yǔ)句 n+1end(3) try 語(yǔ)句trymatlab 語(yǔ)句 1 catchmatlab 語(yǔ)句 2end說(shuō)明:try 語(yǔ)句先試探性執(zhí)行語(yǔ)句組 1,如果語(yǔ)句組 1 在執(zhí)行過(guò)程中出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息賦給保留的 lasterr 變量,并轉(zhuǎn)去執(zhí)行語(yǔ)句組 2。(二)循環(huán)結(jié)構(gòu)(1) for 語(yǔ)句for 循環(huán)變量 = 初始值 : 步長(zhǎng) : 終值循環(huán)體語(yǔ)句end執(zhí)行過(guò)程:給循環(huán)變量賦初始值,判

12、斷若小于終值(若步長(zhǎng)為負(fù)則大于),則執(zhí)行循環(huán)體語(yǔ)句;循環(huán)變量加一個(gè)步長(zhǎng),再判斷若小于終值,則執(zhí)行循環(huán)體語(yǔ)句;重復(fù)前面過(guò)程直到循環(huán)變量不小于終值,跳出循環(huán)。(2) while 語(yǔ)句while(條件)循環(huán)體語(yǔ)句end執(zhí)行過(guò)程:若條件成立,則執(zhí)行循環(huán)體語(yǔ)句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)?!啊薄啊盿t the end, xiao bian gives you a passage. minand once said, people who learn to learn are very happy people. in every wonderful life, learning is

13、 an eternal theme. as a professional clerical and teaching position, i understand the importance of continuous learning, life is diligent, nothing can be gained, only continuous learning can achieve better self. only by constantly learning and mastering the latest relevant knowledge, can employees from all walks of life keep up with the pace of ent

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論