【新星计划】MATLAB-定义函数
在MATLAB中,函數定義在單獨的文件。文件函數的文件名應該是相同的。
函數是一組語句一起執行任務。
函數在自己的工作空間進行操作,被稱為本地工作區,獨立的工作區;在 MATLAB 命令提示符訪問,這就是所謂的基礎工作區的變量。
?
函數可以接受多個輸入參數和可能返回多個輸出參數。
函數語句的語法是:
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)詳細例子
下述有個 mymax 函數,它需要五個數字作為參數并返回最大的數字。
建立函數文件,命名為 mymax.m 并輸入下面的代碼:
function max = mymax(n1, n2, n3, n4, n5)%This function calculates the maximum of the% five numbers given as inputmax = n1;if(n2 > max) max = n2;endif(n3 > max) max = n3;endif(n4 > max) max = n4;endif(n5 > max) max = n5;end每個函數的第一行要以 function 關鍵字開始。它給出了函數的名稱和參數的順序。
在我們的例子中,mymax 函數有5個輸入參數和一個輸出參數。
注釋行語句的功能后提供的幫助文本。這些線條打印,當輸入:
help mymaxMATLAB執行上述語句,返回以下結果:
This function calculates the maximum of the five numbers given as input可以調用該函數:
mymax(34, 78, 89, 23, 11)MATLAB執行上述語句,返回以下結果:
ans = 89MATLAB匿名函數
一個匿名的函數就像是在傳統的編程語言,在一個單一的 MATLAB 語句定義一個內聯函數。
它由一個單一的 MATLAB 表達式和任意數量的輸入和輸出參數。
在MATLAB命令行或在一個函數或腳本可以定義一個匿名函數。
這種方式,可以創建簡單的函數,而不必為他們創建一個文件。
建立一個匿名函數表達式的語法如下:
- ?
詳細例子
在這個例子中,我們將編寫一個匿名函數 power,這將需要兩個數字作為輸入并返回第二個數字到第一個數字次冪。
在MATLAB中建立一個腳本文件,并輸入下述代碼:
power = @(x, n) x.^n;result1 = power(7, 3)result2 = power(49, 0.5)result3 = power(10, -10)result4 = power (4.5, 1.5)運行該文件時,顯示結果:
- ?
- ?
主要函數和子函數
在一個文件中,必須定義一個匿名函數以外的任何函數。每個函數的文件包含一個必需的主函數和首先出現的任何數量的可選子函數,在主要函數之后使用。
主要函數可以調用的文件,它定義之外,無論是從命令行或從其他函數,但子功能不能被稱為命令行或其他函數,外面的函數文件。
子功能可見函數內的文件,它定義它們的主要函數和其他函數。
詳細例子
我們寫一個 quadratic 函數來計算一元二次方程的根。
該函數將需要三個輸入端,二次系數,線性合作高效的和常數項,它會返回根。?
函數文件 quadratic.m 將包含的主要 quadratic 函數和子函數 disc 來計算判別。
在MATLAB中建立一個函數文件 quadratic.m 并輸入下述代碼:
- ?
- ?
可以從命令提示符調用上述函數為:
- ?
MATLAB執行上面的語句,返回以下結果:
- ?
- ?
?
?
?
MATLAB嵌套函數
在這個機體內另一個函數,可以定義函數。這些被稱為嵌套函數。
嵌套函數包含任何其他函數的任何或所有的組件。
嵌套函數被另一個函數的范圍內定義他們共享訪問包含函數的工作區。
嵌套函數的語法如下:
- ?
詳細例子
我們重寫前面例子的 quadratic 函數,但是,這一次的 disc 函數將是一個嵌套函數。?
在MATLAB中建立一個函數文件 quadratic2.m,并輸入下述代碼:
???????
function [x1,x2] = quadratic(a,b,c)d = disc(a,b,c);function d = disc(a,b,c) % nested functiond = sqrt(b^2 - 4*a*c);end % end of function disc x1 = (-b + d) / (2*a);x2 = (-b - d) / (2*a);end % end of function quadratic2可以從命令提示符調用上面的函數為:
- ?
MATLAB執行上面的語句,返回以下結果:
>> [a,b] = quadratic(2,4,-4) a = 0.7321b = -2.7321?
MATLAB私有函數
一個私有函數是一個主要的函數,是只看得見一組有限的其它函數。
如果不想公開的執行的一個函數,可以創建私有函數。
私有函數駐留特殊的名字私人的子文件夾中。
他們是可見的,只有在父文件夾的函數。
詳細例子
重寫 quadratic 函數。然而,這時計算的判別式 disc 函數,是一個私有函數。
在MATLAB中建立一個子文件夾命名為私人工作目錄。它存儲在以下函數文件 disc.m:
function dis = disc(a,b,c) %function calculates the discriminantdis = sqrt(b^2 - 4*a*c);end % end of sub-function在工作目錄,創建一個函數 quadratic3.m ,輸入下述代碼:
function [x1,x2] = quadratic3(a,b,c)%this function returns the roots of % a quadratic equation.% It takes 3 input arguments% which are the co-efficients of x2, x and the %constant term% It returns the rootsd = disc(a,b,c); x1 = (-b + d) / (2*a);x2 = (-b - d) / (2*a);end % end of quadratic3可以從命令提示符調用上面的函數為:
- ?
MATLAB執行上面的語句,返回以下結果:
>> [a,b] = quadratic(2,4,-4) a = 0.7321b = -2.7321?
MATLAB全局變量
全局變量可以共享由一個以上的函數。對于這一點,需要將變量聲明為全局在所有的函數可使用。
如果想訪問該變量從基工作區,然后在命令行聲明的變量。
全局聲明必須出現在變量中實際上是使用功能。這是一個很好的做法是使用大寫字母為全局變量的名稱,以區別于其他變量。
詳細例子
創建一個函數文件名為 average.m ,輸入下述代碼:
function avg = average(nums)global TOTALavg = sum(nums)/TOTAL;end在MATLAB中建立一個腳本文件,輸入下面的代碼:
- ???????
運行該文件,顯示以下結果:
- ?
- ?
?
?
總結
以上是生活随笔為你收集整理的【新星计划】MATLAB-定义函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【新星计划】MATLAB绘制图形
- 下一篇: 【新星计划】MATLAB-微积分