当使用代码时,遇到一片段很多并且使用率非常高时,我们就可以用到函数来封装他,每次调用他的时候,就只要调用函数名就可。Matlab也提供了函数的实现。

1.自定义函数

        当系统自带的函数不能满足当前需求时,我们就可以像Java一样声明一个新的方法。Matlab也可以做同样的事。

        函数是写在一个.m后缀文件里的,并且一个文件只能有一个函数。

        

MATLAB怎么用CEEMDAN matlab怎么用函数_MATLAB怎么用CEEMDAN

         新建脚本之后,就会出现一个编辑器框。在此框写你要自定义函数的内容。

MATLAB怎么用CEEMDAN matlab怎么用函数_调用函数_02

         函数格式为:

% 函数
% function  [返回值] = 函数名(形参)
%       函数体执行语句

        其中函数名最好跟文件名一致,如果你提前写好了函数名,保存文件时会默认为该文件名。

形参为你要传入的元素,如果有多个则按照逗号排好(a,b)。

        形参就是你需要跟随调用函数时传进来的参数矩阵,并且可以在该函数体内使用的。

        返回值如果有多个的话,就要用[ ]中括号,变量之间的排列也用 , 连接。

        如:我要实现一个a矩阵和b矩阵交换的函数。并且返回两个矩阵 。

MATLAB怎么用CEEMDAN matlab怎么用函数_调用函数_03

        保存之后就会提示你重命名

MATLAB怎么用CEEMDAN matlab怎么用函数_自定义函数_04

         保存之后,自定义函数就写好了。

        我们来进行测试一下。

        在脚本文件或者命令行窗口调用函数时,直接使用  接受返回值的矩阵 = 函数名(实参) ,实参就是需要传入函数中的值,返回的值就会依次赋给左边的变量矩阵。


A = [1:10];
B = [1;2;3];
[A,B] = exchange(A,B)


       运行之后, 我们可以发现A矩阵和B矩阵的值交换了 。

MATLAB怎么用CEEMDAN matlab怎么用函数_函数表达式_05

        这种方式创建函数,是允许函数重载。那么对于函数重载时,如何控制函数主体内容的实现可以用nargin 和nargout 。这两个可以捕捉到是如何调用函数的,一个记录传入参数的个数,一个记录函数返回参数的个数。

        nargin 返回当前调用该函数之后传入参数的个数。

        nargout 返回调用该函数之后函数返回的参数的个数。


我们来试一下。

        创建test_nargin.m文件

    function [a,b]  = test_nargin(a,b)
    if nargin == 0
        disp('没有参数传入');
    elseif nargin==1
        disp('有一个参数传入');
    elseif nargin ==2
        disp('有两个参数传入');
    end

        对于命令行窗口分别执行:

MATLAB怎么用CEEMDAN matlab怎么用函数_自定义函数_06

MATLAB怎么用CEEMDAN matlab怎么用函数_MATLAB怎么用CEEMDAN_07

MATLAB怎么用CEEMDAN matlab怎么用函数_matlab_08

        创建test_nargout.m

function [a,b] = test_nargout()
    if nargout ==0
        disp('调用函数返回0参数');
    elseif nargout ==1
        disp('调用函数返回1参数');
    elseif nargout==2
        disp('调用函数返回2参数');
    end

 来调用一下函数。

MATLAB怎么用CEEMDAN matlab怎么用函数_调用函数_09

       

         当发现自定义函数需要重新创建一个文件夹存放可能有点麻烦时,并且感觉简单的自定义函数没必要这样大张旗鼓的话,可以试试下面两种函数。下面两个函数就有一个不安全的问题,可以使用在函数外已经定义过的变量可以被使用。

2.inline函数

        直接可以在命令行或脚本文件定义函数的。

        
%inline函数
    函数名  =  inline('函数表达式','自变量'); %自变量就是你需要传入的参数

        

        其中,自变量就是上述的形参,你需要传入的值,并且可以在函数表达式中当已知量使用,当自变量很多时,可以用,隔开。如 inline('函数表达式','自变量1','自变量2') 

        我们来测试一下,写一个返回1-n之和的函数。

fsum = inline('sum(1:n)','n');
b = fsum(100)

        不出所料b的值变成了5050

MATLAB怎么用CEEMDAN matlab怎么用函数_MATLAB怎么用CEEMDAN_10

3.匿名函数


函数名= @(自变量)函数表达式   %其中自变量就是需要传入的参数

         开头一个@ ,加一个被小括号包围的传入的参数。函数表达式不需要小括号和'  '包围,可以直接写一个公式。

        照样写一个例子,求返回1-n之和的函数

fsum_1 = @(n)sum(1:n);
c = fsum_1(100)

        

MATLAB怎么用CEEMDAN matlab怎么用函数_MATLAB怎么用CEEMDAN_11