matlab中同一文件定義子函數的方法(zhuan)


matlab中同一文件定義子函數的方法

有時子函數可能很短,就幾行,可能希望將多個函數定義放在同一個.m文件中,這里就存在一個子函數的定義問題。
在matlab中一個.m文件中可以有多個的子函數,但僅能有一個主函數,並且M文件名必須和主函數相同

 

在一個m文件中通常有兩種定義子函數的方法:

1.嵌套定義

function mainFunc()
...
a = myfunc1();
...
function myfunc1()
...
end

end

2. 非嵌套定義
function mainFunc()
...
a = myfunc1();
...
end

function myfunc1()
...
end

在第二種情況中,myfunc1和主函數就是兩個獨立的函數,和把它們寫在兩個獨立的文件
中沒有差別。變量名想怎么起怎么起,不會有任何沖突。


而第一種情況中,myfunc1會和主函數共享變量名。這種情況下,使用相同的變量名,如
果不是故意為之,就不合適了。

 

 

例子:

下面是某個.m腳本文件(son_function.m文件)中的內容:

% %-----------------------------------------------------------------------

function son_function( )        %主函數必須位於最上方
%子函數舉例
max1=find_max(1,2,3)
max2=find_max(7,3,9)


function max=find_max(a,b,c)    %子函數
if (a>=b)&(a>=c)
    max=a;
elseif (b>=a)&(b>=c)
    max=b;
else
    max=c;
end

% %-----------------------------------------------------------------------

注意:
M文件中將函數的調用直接寫到m腳本文件中的情況是不允許的,必須也把調用寫成函數的形式,或者將子函數都寫成單獨的m文件。

如將上程序中的第一行屏蔽掉,即

% function son_function( ) 

會出現下面的錯誤

Function definitions are not permitted at the prompt or in scripts.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM