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)
Matlab中的函数相关推荐
- Matlab中bwmorph函数的使用
Matlab中bwmorph函数的使用 Matlab中提供了一个基于形态学的处理函数,即以膨胀.腐蚀等操作为基础,其语法格式如下: bw2=bwmorph(bw1,operation,n); 其中bw ...
- 9.matlab中repmat函数
来源: matlab中repmat函数的用法 - CSDN博客 https://blog.csdn.net/anqier1009/article/details/5214978 B = repmat( ...
- 如何在Matlab中获取函数参数的数目?
本图文详细介绍了Matlab中获取函数参数数目的方法.
- 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 ...
- 关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法
关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法 参考文章: (1)关于MATLAB中xlswrite函数写数据出现服务器异常情况的解决办法 (2)https://www.cn ...
- Matlab中Ksdensity()函数的用途 (2011-04-02 16:55:17)
Matlab中Ksdensity()函数的用途 (2011-04-02 16:55:17) 转载▼ 标签: 杂谈 分类: Matlab应用 我们在统计数据处理时,经常计算一个样本的概率密度估计,也就是 ...
- cumsum在matlab中,matlab中cumsum函数和sum函数详解
调用格式及说明 matlab中cumsum函数通常用于计算一个数组各行的累加值.在matlab的命令窗口中输入doc cumsum或者help cumsum即可获得该函数的帮助信息. 调用格式及说明 ...
- matlab中fprintf函数的具体使用方法
matlab中fprintf函数的具体使用方法实例如下: fprintf函数可以将数据按指定格式写入到文本文件中.其调用格式为: 数据的格式化输出:fprintf(fid, format, varia ...
- Matlab中plot函数及legend函数详解
Matlab中plot函数及legend函数详解 Matlab中plot函数及legend函数详解 Matlab中plot函数全功能解析 功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1 ...
- matlab 中max函数用法
Matlab中max函数在矩阵中求函数大小的实例如下: (1)C = max(A) 返回一个数组各不同维中的最大元素. 如果A是一个向量,max(A)返回A中的最大元素. 如果A是一个矩阵,max(A ...
最新文章
- R语言ggplot2可视化自定义图例(legend)方框(box):所有图例没有方框、每个图例分别在不同的方框中、多个图例放置在同一个方框中
- VC++ 获取系统时间的方法汇总
- USB接口直接焊线的顺序记录
- 当 JS 工程师遇到了 TypeScript 会发生什么?
- mybatis之动态SQL操作之查询
- Flask设置返回json格式数据
- Redis 排行榜 相同分数根据时间优先排行
- Android性能优化(1) 内存泄露 amp; 解决方案
- 2021年十大 web hacking 技术汇总
- 排列(permutation)的末尾 0 的个数
- java八大排序算法详解
- 很久以前写的lumaqq安装教程
- 如何用电脑查看自己的IP地址
- poi生成pptx文件以及背景颜色或者背景图片的设置
- mysql拼音码自动生成_根据中文名,自动生成首字母的拼音码或拼音码(两种方法)...
- 瀑布流插件WookMark
- [大学物理实验-0]修约规则和常见的实验数据的处理
- 会做饭的机器人曰记_会做饭的机器人!
- 2048和多地址入口_王者荣耀2020周年庆返场皮肤投票入口 周年庆皮肤返场投票地址...
- ssi 指令 php,SSI使用详解(一)_php
热门文章
- 训练神经网络用什么显卡,cpu可以训练神经网络吗
- GB28181协议之设备控制
- 使用 IPMI 远程为服务器安装操作系统教程
- MSVCR110.dll缺失问题解决
- 如何等概率地从n个数中随机抽出m个数?
- 米兔积木机器人能飞吗_小米再次以性价比进入儿童行业,这款米兔积木机器人成为送礼新宠...
- 开源雨林 | 开源运营是开源社区的护城河——开源社理事、华为开源能力中心开源专家庄表伟访谈实录...
- 无线耳机什么牌子的好?内行盘点四款好用的蓝牙耳机
- Java-HotSpot是个什么玩意
- plane-sweep