日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【新星计划】MATLAB-定义函数

發(fā)布時(shí)間:2025/3/21 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【新星计划】MATLAB-定义函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在MATLAB中,函數(shù)定義在單獨(dú)的文件。文件函數(shù)的文件名應(yīng)該是相同的。

函數(shù)是一組語句一起執(zhí)行任務(wù)。

函數(shù)在自己的工作空間進(jìn)行操作,被稱為本地工作區(qū),獨(dú)立的工作區(qū);在 MATLAB 命令提示符訪問,這就是所謂的基礎(chǔ)工作區(qū)的變量。

?

函數(shù)可以接受多個(gè)輸入?yún)?shù)和可能返回多個(gè)輸出參數(shù)。

函數(shù)語句的語法是:

function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)

詳細(xì)例子

下述有個(gè) mymax 函數(shù),它需要五個(gè)數(shù)字作為參數(shù)并返回最大的數(shù)字。

建立函數(shù)文件,命名為 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

每個(gè)函數(shù)的第一行要以 function 關(guān)鍵字開始。它給出了函數(shù)的名稱和參數(shù)的順序。

在我們的例子中,mymax 函數(shù)有5個(gè)輸入?yún)?shù)和一個(gè)輸出參數(shù)。

注釋行語句的功能后提供的幫助文本。這些線條打印,當(dāng)輸入:

help mymax

MATLAB執(zhí)行上述語句,返回以下結(jié)果:

This function calculates the maximum of the five numbers given as input

可以調(diào)用該函數(shù):

mymax(34, 78, 89, 23, 11)

MATLAB執(zhí)行上述語句,返回以下結(jié)果:

ans = 89

MATLAB匿名函數(shù)

一個(gè)匿名的函數(shù)就像是在傳統(tǒng)的編程語言,在一個(gè)單一的 MATLAB 語句定義一個(gè)內(nèi)聯(lián)函數(shù)。

它由一個(gè)單一的 MATLAB 表達(dá)式和任意數(shù)量的輸入和輸出參數(shù)。

在MATLAB命令行或在一個(gè)函數(shù)或腳本可以定義一個(gè)匿名函數(shù)。

這種方式,可以創(chuàng)建簡單的函數(shù),而不必為他們創(chuàng)建一個(gè)文件。

建立一個(gè)匿名函數(shù)表達(dá)式的語法如下:

  • ?
f = @(arglist)expression

詳細(xì)例子

在這個(gè)例子中,我們將編寫一個(gè)匿名函數(shù) power,這將需要兩個(gè)數(shù)字作為輸入并返回第二個(gè)數(shù)字到第一個(gè)數(shù)字次冪。

在MATLAB中建立一個(gè)腳本文件,并輸入下述代碼:

power = @(x, n) x.^n;result1 = power(7, 3)result2 = power(49, 0.5)result3 = power(10, -10)result4 = power (4.5, 1.5)

運(yùn)行該文件時(shí),顯示結(jié)果:

  • ?
  • ?
result1 = 343result2 = 7result3 = 1.0000e-10result4 = 9.5459

主要函數(shù)和子函數(shù)

在一個(gè)文件中,必須定義一個(gè)匿名函數(shù)以外的任何函數(shù)。每個(gè)函數(shù)的文件包含一個(gè)必需的主函數(shù)和首先出現(xiàn)的任何數(shù)量的可選子函數(shù),在主要函數(shù)之后使用。

主要函數(shù)可以調(diào)用的文件,它定義之外,無論是從命令行或從其他函數(shù),但子功能不能被稱為命令行或其他函數(shù),外面的函數(shù)文件。

子功能可見函數(shù)內(nèi)的文件,它定義它們的主要函數(shù)和其他函數(shù)。

詳細(xì)例子

我們寫一個(gè) quadratic 函數(shù)來計(jì)算一元二次方程的根。

該函數(shù)將需要三個(gè)輸入端,二次系數(shù),線性合作高效的和常數(shù)項(xiàng),它會返回根。?

函數(shù)文件 quadratic.m 將包含的主要 quadratic 函數(shù)和子函數(shù) disc 來計(jì)算判別。

在MATLAB中建立一個(gè)函數(shù)文件 quadratic.m 并輸入下述代碼:

  • ?
  • ?
function [x1,x2] = quadratic(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);function dis = disc(a,b,c) %function calculates the discriminantdis = sqrt(b^2 - 4*a*c);end % end of sub-functionend % end of quadratic

可以從命令提示符調(diào)用上述函數(shù)為:

  • ?
[a,b] = quadratic(2,4,-4)

MATLAB執(zhí)行上面的語句,返回以下結(jié)果:

  • ?
  • ?
>> [a,b] = quadratic(2,4,-4) a = 0.7321b = -2.7321

?

?

?

MATLAB嵌套函數(shù)

在這個(gè)機(jī)體內(nèi)另一個(gè)函數(shù),可以定義函數(shù)。這些被稱為嵌套函數(shù)。

嵌套函數(shù)包含任何其他函數(shù)的任何或所有的組件。

嵌套函數(shù)被另一個(gè)函數(shù)的范圍內(nèi)定義他們共享訪問包含函數(shù)的工作區(qū)。

嵌套函數(shù)的語法如下:

  • ?
function x = A(p1, p2)...B(p2) function y = B(p3) ... end...end

詳細(xì)例子

我們重寫前面例子的 quadratic 函數(shù),但是,這一次的 disc 函數(shù)將是一個(gè)嵌套函數(shù)。?

在MATLAB中建立一個(gè)函數(shù)文件 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

可以從命令提示符調(diào)用上面的函數(shù)為:

  • ?
[a,b] = quadratic2(2,4,-4)

MATLAB執(zhí)行上面的語句,返回以下結(jié)果:

>> [a,b] = quadratic(2,4,-4) a = 0.7321b = -2.7321

?

MATLAB私有函數(shù)

一個(gè)私有函數(shù)是一個(gè)主要的函數(shù),是只看得見一組有限的其它函數(shù)。

如果不想公開的執(zhí)行的一個(gè)函數(shù),可以創(chuàng)建私有函數(shù)。

私有函數(shù)駐留特殊的名字私人的子文件夾中。

他們是可見的,只有在父文件夾的函數(shù)。

詳細(xì)例子

重寫 quadratic 函數(shù)。然而,這時(shí)計(jì)算的判別式 disc 函數(shù),是一個(gè)私有函數(shù)。

在MATLAB中建立一個(gè)子文件夾命名為私人工作目錄。它存儲在以下函數(shù)文件 disc.m:

function dis = disc(a,b,c) %function calculates the discriminantdis = sqrt(b^2 - 4*a*c);end % end of sub-function

在工作目錄,創(chuàng)建一個(gè)函數(shù) 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

可以從命令提示符調(diào)用上面的函數(shù)為:

  • ?
[a,b] = quadratic3(2,4,-4)

MATLAB執(zhí)行上面的語句,返回以下結(jié)果:

>> [a,b] = quadratic(2,4,-4) a = 0.7321b = -2.7321

?

MATLAB全局變量

全局變量可以共享由一個(gè)以上的函數(shù)。對于這一點(diǎn),需要將變量聲明為全局在所有的函數(shù)可使用。

如果想訪問該變量從基工作區(qū),然后在命令行聲明的變量。

全局聲明必須出現(xiàn)在變量中實(shí)際上是使用功能。這是一個(gè)很好的做法是使用大寫字母為全局變量的名稱,以區(qū)別于其他變量。

詳細(xì)例子

創(chuàng)建一個(gè)函數(shù)文件名為 average.m ,輸入下述代碼:

function avg = average(nums)global TOTALavg = sum(nums)/TOTAL;end

在MATLAB中建立一個(gè)腳本文件,輸入下面的代碼:

  • ???????
global TOTAL;TOTAL = 10;n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];av = average(n)

運(yùn)行該文件,顯示以下結(jié)果:

  • ?
  • ?
av = 35.5000

?

?

總結(jié)

以上是生活随笔為你收集整理的【新星计划】MATLAB-定义函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。