日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab私有函数,MATLAB 嵌套函数,子函数,私有函数,重载函数

發布時間:2025/3/19 循环神经网络 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab私有函数,MATLAB 嵌套函数,子函数,私有函数,重载函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MATLAB函數嵌套

MATLAB中M文件有兩種類型,腳本M文件和函數M文件。腳本M文件是將可執行程序語句放入M文件中,就像在命令窗口那樣,按其語句順序及邏輯關系執行,可以理解為一般的順序執行程序語句。函數文件一般是聲明一個函數,方便以后操作中的調用。下面就函數文件中函數嵌套的使用做簡單分析。

對于函數文件,一個M文件只能定義一個總函數,即第一句function所定義的函數,而且整個M文件在外部使用時候表現出來的也只有這一個函數。如果需要多個函數嵌套,與其定義順序無關。下面結合一個簡單的例子來分析。

function y=average(x) %聲明一個函數,y=average(x),這個函數是取x的平均值,返回值是y

y=mymean(x); %再次使用函數mymean,此處該函數并沒有定義算法,而是在后面對其進行描述

function a=mymean(v) %定義函數mymean,對于上級函數來說,此處為定義子函數,進行函數嵌套%a=mean(v); %此處為了簡便,使用內部求均值函數mean,當然也可以自己寫,如下句。

a=sum(v)/length(v); %對v求和并除以總長度可得其平均

我們設一個向量z=[1,2,3,4,5,6,7],然后求其平均,在命令窗口輸入average(z)即可。相當于將z分別賦給x和v,由子函數得出返回值a,a和y是等價的,外層可輸出返回值。若去掉y=mymean(x)這句,則總函數外部無返回值輸出。

Matlab子函數

在matlab的函數定義中,如果函數如果函數較長或較多,往往可以將各函數分別寫在多個.m文件中,但有時函數可能很短,就幾行,可能希望將多個函數定義放在同一個.m文件中,這里就存在一個子函數的定義問題。

在matlab中一個.m文件中可以有多個的子函數,但僅能有一個主函數,并且M文件名必須和主函數相同[1]。(注:本人經自己試驗發現,自己使用的matlab7.5版本并不要求主函數名和.m文件名相同,但調用的時候使用的仍然必須是.m文件名,所以為了理解和記憶的方便,仍然建議M文件名和主函數名同名。)

其使用方法如下圖,圖1:

圖1

在這個.m文件中共有三個函數,其中subfunction是主函數,而add和subtract是兩個子函數,在函數調用是使用的是文件名subfunction_cxd(x,y),如[a,b]=subfuction_cxd(1,1),而如果僅是調用主函數的話,則會出現未定義的錯誤提示,如下圖,圖2:

圖2

我們甚至可以將函數的調用也寫到同一個.m文件中,如以下這個例子,見圖3:

圖3

這里我們定義了一個沒有輸入沒有輸出的函數該函數將作為主函數,而其他的函數均為子函數,由主函數調用子函數,而子函數間是可以互相調用,但不能調用主函數。這時的m文件不需要任何輸入,調用時可以直接點運行m文件的快捷鍵,或者在命令框中輸入m文件名然后回車運行,如上例輸入命令subfunction_cxd回車即可得到結果。

M文件中以下這種將函數的調用直接寫到m文件中的情況是不允許的,如圖4,出現錯誤提示如圖5,必須也把調用寫成函數的形式,或者將子函數都寫成單獨的m文件。

圖4

圖5

有時若有需要,子函數的定義甚至可以放在主函數中,即函數的嵌套,如圖6。這種嵌套函數是在函數第一次調用時就加以定義,一旦使用了嵌套函數,無論是嵌套函數還是主函數都必須以end作為函數的結束。當然子函數一旦定義將可在主函數中任意位置調用,如例子中求a時,定義了加法,但求c時仍然可以調用,無需再次定義。注:主函數結束時有一個end表示主函數結束切不可少。

圖6

編寫完函數后,如果有需要,可以吧自己所定義的函數成組的存儲在公共目錄下,即存在工具箱中,通過修改搜索路徑進行訪問,修改MATLAB的搜索路徑可以在主菜單File中的Set Path進行,也可以在命令框中輸入pathtool,獲取下圖路徑設置,見圖7。存儲后的函數在路徑下將可以直接調用。

圖7

matlab子函數私有函數

1.private與子函數:

子函數只能在主函數內容中調用,在函數外無法使用

function MainFunction%主函數內容

function SubFunction1%子函數內容

end

function SubFunction2%子函數內容

end

function SubFunction3%子函數內容

end

end

private函數是matlab軟件中廣泛使用的一種技術,其作用是限定某一些函數(private文件夾內)只能被令一些函數(private文件夾所在文件夾中的函數)使用,其他函數不能使用,這樣的話就可以避免一些無用(因為一般的matlab函數是全局可見的,而private函數只能被private文件夾所在文件夾中的函數調用。

2.ezplot和fplot

ezplot是easy plot的簡稱,意思就是簡化畫圖,只需給出函數體而無需變量范圍,例如想畫個圓,用ezplot就很方便:

syms x y

ezplot(‘x^2+y^2=1‘,[-1.5 1.5],[-1 1])

fplot的意思是function plot,就是畫某一函數的曲線。顧名思義,若要畫一條函數的曲線,只要給出函數名和自變量范圍即可,例子如下:

fplot(‘sin‘,[-2 2])

matlab函數重載

C語言中可以通過參數的個數和數據類型來區分同名函數,實現函數的重載。

matlab的函數重載是通過檢查函數調用時輸入輸出的項數來實現。

nargin和nargout分別返回它所在函數當前被調用時實際輸入的項數

nargchk()檢查輸入的參數個數是否符合指定的范圍:

msgstr=nargchk(minargs,maxargs,numargs)

msgstr=nargchk(minargs,maxargs,numargs,‘string‘)

其中,minargs和maxargs合法的最大值最小值,numargs為求得的輸入項的項數,可直接為函數nargin

如果輸入變量個數超出范圍,則返回錯誤信息;如果變量個數在范圍內則返回空矩陣。

例:實現兩個數相加或者三個數相乘

function B =addd(varargin)%varargin是matlab內部變量,cell型,依次存儲函數的所有輸入變量% 如add(A1, A2, A3), 則 varargin{1} = A1, varargin{2} = A2, varargin{3} =A3%nargin同樣也是matlab內部變量, 為函數輸入 變量的個數%如果變量個數小于2大于3,則報錯

error(nargchk(2,3,nargin));if nargin == 2A1= varargin{1};

A2= varargin{2};

B=A1+A2;elseA1= varargin{1};

A2= varargin{2};

A3=varargin{3};

B=A1*A2*A3;

end ;>> addd(1)

Errorusing addd (line 2)

Not enough input arguments.>> addd(1,2,3,4)

Errorusing addd (line 2)

Too many input arguments.>> addd(7,2,3)

ans=

42

varargin變量用法靈活,如 function add(var1,var2,varargin)

此時varargin存儲的是var1和var2之后的變量

原文:http://www.cnblogs.com/MarshallL/p/4048846.html

總結

以上是生活随笔為你收集整理的matlab私有函数,MATLAB 嵌套函数,子函数,私有函数,重载函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。