我有兩個Matlab函數f=fun1(x)
和f=fun2(x,y)
,它們非常相似,我想將它們集成到一個函數f=fun(x,y)
中。在Matlab中將多個相似函數集成到一個函數中
對於第一函數I有
function f=fun1(x)
N=1000; % Some large number.
for j=1:N
f=x^2;
end
和用於第二功能
function f=fun2(x,y)
N=1000; % Some large number.
for j=1:N
f=x^2;
f=f+y;
end
。所以實際上fun1
是fun2
的子功能。我想構建一個功能f=fun(x,y,method_number)
像
function f=fun(x,y,method_number)
N=1000; % Some large number.
for j=1:N
f=x^2; % If method_number==1 run only this command....
f=f+y; % If method_number==2 run also this command.
end
這只是一個我想解決這個問題的短簡化例子。我真正的問題是我有三個長函數f=fun1(x,y,z)
,f=fun2(x,y)
和f=fun3(x)
有幾個相似之處,其中fun3
是fun2
的子函數,fun2
是fun1
的子函數,其功能與上面相同。我不相信使用switch-case
或if-else
無處不在是一個選項,因爲N
可能會非常大,這將是低效的。此外,它會完全破壞代碼的佈局。
看看[本地功能](http://es.mathworks.com/help/matlab/matlab_prog/local-functions.html)和[嵌套功能](http://es.mathworks.com/幫助/ matlab/matlab_prog/nested-functions.html) –