matlab怎么在一个m文件中写多个函数?

2024-10-31 02:03:34
推荐回答(5个)
回答1:

一个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

回答2:

在一个m文件中写多个函数,每个函数都以function开始,结束可以带end,也可以不带(这种情况下,出现另一个function或者到达文件结尾表明前一个function结束)。

第一个函数作为主函数,可以从该m文件外部调用,其它函数都是局部函数,只能被m文件中的函数调用。主函数命名最好和m文件名相同,如果不同,则调用时应该使用m文件名(不带扩展名)。

回答3:

平常我们在matlab中自行编写一个函数,编译器规定函数名和文件名必须一致,这样如果我们需要定义多个函数,就需要编写多个.m文件,数量一多容易混淆。

为了实行MATLAB 在同一个m文件中写多个独立的功能函数,从而实现在外部可以直接调用这个文件中的某一个函数的功能,我们需要有一个统一的接口来涵盖这些函数。

假设在函数文件Funcollect.m 内定义一个接口,通过匿名函数调用 (不支持matlab所以就放图片了)
本人是新手,想在一个M文件中撰写很多个独立的函数,然后在使用的时候可以直接调用。
我用过VC++,一般都是建一个文件类,将很多个独立的函数写在一个类文件中,然后调用该类的某个函数的时候,添加类的名称.函数名就可以调用了。
不知道Matlab是否也可以这么做那?请高手出来指导一下
非常感谢超版的解答。问题是这样子的:
我要撰写的函数数量有点庞大,我想借鉴VC++中类的模式来撰写函数,这样子我在调用的时候可以区分开这个函数是属于哪个类的子函数。
另外,同一个函数名,有几种算法来实现,而且这些算法出自不同的标准,其方法及结果是有差异的。我想用类来区分这个函数是出自哪个标准的。我在VC++中使用类就可以很方便来实现。还可以将这个类封装一下。
现在专用Matlab来撰写这些函数,故而提出这个问题。
还有,我在论坛上看到MATLAB已经支持类来封装大量的函数,不知道哪位对此方法比较精通?给指点一下

回答4:

好像只能定义一个,我试了多个都是不行的。除非嵌套使用。matlab每个被调用的文件必须与文件名同名,否则需要使用文件名而非函数名。

回答5:

只能有一个主函数,其他子函数可以有很多歌