Matlab内置函数详解与应用

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


1.自定义函数

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

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

       

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

        函数格式为:

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

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

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

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

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

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


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

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

       我们来进行测试一下。

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

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

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

       这种方式创建函数,是允许函数重载。那么对于函数重载时,如何控制函数主体内容的实现可以用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

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




       创建test_nargout.m

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


来调用一下函数。

     


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


2.inline函数

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

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

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

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

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

       不出所料b的值变成了5050




3.匿名函数

       

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

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

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

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

       

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空