一个m文件中定义了多个函数的话,这些函数只能在这个m文件中的函数中调用。
function 函数名
函数内容
end
function 函数名1
函数内容
end
matlab中如何定义函数
首先建立M文件或直接点击(File/New/Function)建立函数文件,其中函数文件的格式是:
function [输出变量] = 函数名称(输入变量)
% 注释
% 函数体
end
编写代码如下并保存文件,注意文件命名时不能以数字开头:
function [s] = eg_sum( n )
% calculate the sum of 1..n
s = 0;
for i = 1:n
s = s + i;
end
回到控制台Command Window(主界面),注意要使用之前保存的函数文件名来调用函数,如下所示:
>> clear
>> a = eg_sum(10)
运行结果: a = 55
函数名可以与函数文件名不一致,只要知道调用函数时是通过函数文件名调用的这点即可!如下图所示,即使文件名仍然是eg_sum,但我可以修改函数名为:my_sum 调用时用文件名调用就好,如下所示:
>> b = eg_sum(10)
运行结果: b = 55
在一个m文件中写多个函数,每个函数都以function开始,结束可以带end,也可以不带(这种情况下,出现另一个function或者到达文件结尾表明前一个function结束)。
第一个函数作为主函数,可以从该m文件外部调用,其它函数都是局部函数,只能被m文件中的函数调用。主函数命名最好和m文件名相同,如果不同,则调用时应该使用m文件名(不带扩展名)。
平常我们在matlab中自行编写一个函数,编译器规定函数名和文件名必须一致,这样如果我们需要定义多个函数,就需要编写多个.m文件,数量一多容易混淆。
为了实行MATLAB 在同一个m文件中写多个独立的功能函数,从而实现在外部可以直接调用这个文件中的某一个函数的功能,我们需要有一个统一的接口来涵盖这些函数。
假设在函数文件Funcollect.m 内定义一个接口,通过匿名函数调用 (不支持matlab所以就放图片了)
本人是新手,想在一个M文件中撰写很多个独立的函数,然后在使用的时候可以直接调用。
我用过VC++,一般都是建一个文件类,将很多个独立的函数写在一个类文件中,然后调用该类的某个函数的时候,添加类的名称.函数名就可以调用了。
不知道Matlab是否也可以这么做那?请高手出来指导一下
非常感谢超版的解答。问题是这样子的:
我要撰写的函数数量有点庞大,我想借鉴VC++中类的模式来撰写函数,这样子我在调用的时候可以区分开这个函数是属于哪个类的子函数。
另外,同一个函数名,有几种算法来实现,而且这些算法出自不同的标准,其方法及结果是有差异的。我想用类来区分这个函数是出自哪个标准的。我在VC++中使用类就可以很方便来实现。还可以将这个类封装一下。
现在专用Matlab来撰写这些函数,故而提出这个问题。
还有,我在论坛上看到MATLAB已经支持类来封装大量的函数,不知道哪位对此方法比较精通?给指点一下
好像只能定义一个,我试了多个都是不行的。除非嵌套使用。matlab每个被调用的文件必须与文件名同名,否则需要使用文件名而非函数名。
只能有一个主函数,其他子函数可以有很多歌