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.
