当使用代码时,遇到一片段很多并且使用率非常高时,我们就可以用到函数来封装他,每次调用他的时候,就只要调用函数名就可。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)

Matlab中的函数相关推荐

  1. Matlab中bwmorph函数的使用

    Matlab中bwmorph函数的使用 Matlab中提供了一个基于形态学的处理函数,即以膨胀.腐蚀等操作为基础,其语法格式如下: bw2=bwmorph(bw1,operation,n); 其中bw ...

  2. 9.matlab中repmat函数

    来源: matlab中repmat函数的用法 - CSDN博客 https://blog.csdn.net/anqier1009/article/details/5214978 B = repmat( ...

  3. 如何在Matlab中获取函数参数的数目?

    本图文详细介绍了Matlab中获取函数参数数目的方法.

  4. matlab s% d%,matlab中var函数的翻译For N-D arrays, VAR operates along the first

    matlab中var函数的翻译For N-D arrays, VAR operates along the first matlab中var函数的翻译 For N-D arrays, VAR oper ...

  5. 关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法

    关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法 参考文章: (1)关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法 (2)https://www.cn ...

  6. Matlab中Ksdensity()函数的用途 (2011-04-02 16:55:17)

    Matlab中Ksdensity()函数的用途 (2011-04-02 16:55:17) 转载▼ 标签: 杂谈 分类: Matlab应用 我们在统计数据处理时,经常计算一个样本的概率密度估计,也就是 ...

  7. cumsum在matlab中,matlab中cumsum函数和sum函数详解

    调用格式及说明 matlab中cumsum函数通常用于计算一个数组各行的累加值.在matlab的命令窗口中输入doc cumsum或者help cumsum即可获得该函数的帮助信息. 调用格式及说明 ...

  8. matlab中fprintf函数的具体使用方法

    matlab中fprintf函数的具体使用方法实例如下: fprintf函数可以将数据按指定格式写入到文本文件中.其调用格式为: 数据的格式化输出:fprintf(fid, format, varia ...

  9. Matlab中plot函数及legend函数详解

    Matlab中plot函数及legend函数详解 Matlab中plot函数及legend函数详解 Matlab中plot函数全功能解析 功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1 ...

  10. matlab 中max函数用法

    Matlab中max函数在矩阵中求函数大小的实例如下: (1)C = max(A) 返回一个数组各不同维中的最大元素. 如果A是一个向量,max(A)返回A中的最大元素. 如果A是一个矩阵,max(A ...

最新文章

  1. R语言ggplot2可视化自定义图例(legend)方框(box):所有图例没有方框、每个图例分别在不同的方框中、多个图例放置在同一个方框中
  2. VC++ 获取系统时间的方法汇总
  3. USB接口直接焊线的顺序记录
  4. 当 JS 工程师遇到了 TypeScript 会发生什么?
  5. mybatis之动态SQL操作之查询
  6. Flask设置返回json格式数据
  7. Redis 排行榜 相同分数根据时间优先排行
  8. Android性能优化(1) 内存泄露 amp; 解决方案
  9. 2021年十大 web hacking 技术汇总
  10. 排列(permutation)的末尾 0 的个数
  11. java八大排序算法详解
  12. 很久以前写的lumaqq安装教程
  13. 如何用电脑查看自己的IP地址
  14. poi生成pptx文件以及背景颜色或者背景图片的设置
  15. mysql拼音码自动生成_根据中文名,自动生成首字母的拼音码或拼音码(两种方法)...
  16. 瀑布流插件WookMark
  17. [大学物理实验-0]修约规则和常见的实验数据的处理
  18. 会做饭的机器人曰记_会做饭的机器人!
  19. 2048和多地址入口_王者荣耀2020周年庆返场皮肤投票入口 周年庆皮肤返场投票地址...
  20. ssi 指令 php,SSI使用详解(一)_php

热门文章

  1. 训练神经网络用什么显卡,cpu可以训练神经网络吗
  2. GB28181协议之设备控制
  3. 使用 IPMI 远程为服务器安装操作系统教程
  4. MSVCR110.dll缺失问题解决
  5. 如何等概率地从n个数中随机抽出m个数?
  6. 米兔积木机器人能飞吗_小米再次以性价比进入儿童行业,这款米兔积木机器人成为送礼新宠...
  7. 开源雨林 | 开源运营是开源社区的护城河——开源社理事、华为开源能力中心开源专家庄表伟访谈实录...
  8. 无线耳机什么牌子的好?内行盘点四款好用的蓝牙耳机
  9. Java-HotSpot是个什么玩意
  10. plane-sweep