1、文件结构
|–根目录
|–main.m
|–CallbackFunc.m
|–callback
|–CallbackFunc2.m
2、程序
1、同一文件夹下函数调用
创建CallbackFunc.m
,用于存放子函数
function Funcollect = CallbackFunc
Funcollect.myfun = @myfun;
Funcollect.func = @func;
end
function f = myfun(a,x)
f = a + a*exp(-0.02*a*x);
end
function y = func(x)
if x < 0
y = abs(x);
else
y = cos(x) + x;
end
end
创建main.m
,作为主函数
其中,main.m
和CallbackFunc.m
在同一文件夹下(后面会讲到不在同一文件夹下的调用)
Funcollect = CallbackFunc;
y = Funcollect.func(-2);
disp(y)
运行结果:
>> main
2
2、不同文件夹下函数调用
上面例子介绍了在同一文件夹下的.m
相互调用。但是在实际项目中,很多时候我们为了将程序模块化,通常将不同功能的函数放到固定的文件夹内。那么我们怎么调用不同文件夹内的文件,其实很简单,请往下看:
在程序前添加代码:addpath(genpath(pwd));
将当前文件夹下的所有文件夹都包括进调用函数的目录 ...
就是:addpath, genpath两个函数
添加 myfiles 和它的子目录到搜索路径中:
addpath(genpath('c:/matlab/myfiles'))
这里我把添加路径单独摘出方便大家复制
addpath(genpath('c:/matlab/myfiles'))
OK,为了方便大家理解,我们下面用实例说明:
首先在callback
文件夹下创建CallbackFunc2.m
(是CallbackFunc2.m
哦!)
function Funcollect = CallbackFunc2
Funcollect.myfun = @myfun;
Funcollect.func = @func;
end
function f = myfun(a,x)
f = a + a*exp(-0.02*a*x);
end
function y = func(x)
if x < 0
y = abs(x);
else
y = cos(x) + x;
end
end
返回到上一级文件夹中的main.m
,更改程序为:
addpath(genpath('E:\网上下载\Matlab_Lesson\CaiNiaojc_Lesson\callback'))
Funcollect = CallbackFunc2;
y = Funcollect.func(-2); %(是`CallbackFunc2.m`哦!)
disp(y)
运行结果:
>> main
2