一种特别的输入参数varargin 可以在自定义函数中得到,这种函数支持输入参数的变量的个数。这个参数显在输入参数列表的最后一项,它返回一个单元阵列,所以一个输入实参可以包括任意数目的实参。每一个实参都变成了由varagin 返回的单元阵列元素。如果它被应用,varagin 必须是函数中的最后一个输入参数。

  

varargin

【功能描述】返回函数输入参数列表长度

【函数描述】function y=bar(varargin):得到函数输入参数列表长度,varargin函数仅用于函数m文件内。

varargin参数位于函数输入参数列表的末尾,varargin必须小写。

【函数实例】新建一个名为lxyhds.m的函数,函数代码如下:

function lxyhds(argA, argB, varargin) %lxyhds为自己起的任意一个函数名字 optargin=size(varargin,2);%获取可选参数数目 nargin为系统变量,返回函数参数数目,此处返回除了可选变量之外的变 量数目stdargin=nargin - optargin; %传入参数至少有argA时才输出argA if stdargin >= 1 fprintf(' %d\n', argA) end%传入参数有argB时输出argB if stdargin == 2 fprintf(' %d\n', argB)end%size(varargin,2)返回可选参数个数,此处输出可选参数列表 for k= 1 : size(varargin,2) fprintf(' %d\n', varargin{k}) end end

例如,写了一个函数:function test(varargin)

那么在这个函数里,varargin就是一个cell数组,它包含了用户输入的参数。下面是一个例子:

function test(varargin)
disp(['nargin is ' num2str(nargin)]);
for v=1:numel(varargin)disp(['varargin{' num2str(v) '} class is ' class(varargin{v})]);
end

完全就是使用cell数组的方法来处理用户输入的个数不定的参数,如果我们这样调用这个函数:

>> test()

会得到结果:

nargin is 0

表示用户输入参数个数为0个,就是没有输入参数。

如果这样调用:

>> test(1,'a',uint8(32),'123456');

会得到结果:

nargin is 4
varargin{1} class is double
varargin{2} class is char
varargin{3} class is uint8
varargin{4} class is char

表示用户输入了4个参数,第一个是double类型,第二个是char类型,第三个是uint8类型,第四个也是char类型。

也就是说,只要把函数的参数列表的最后一个参数写成varargin,就可以在函数内部以访问cell数组的方式来获取可变参数的信息。

转载于:https://www.cnblogs.com/lihuidashen/p/3431277.html

输入参数varargin相关推荐

  1. matlab中未定义与 ‘cell‘ 类型的输入参数相对应的运算符 ‘+‘ 的解决方案

    在函数文件中写入以下内容 function re=fun(a,b,varargin) if nargin == 2re=a+b; elseif nargin==3c=varargin(1);re = ...

  2. M文件-函数的参数-传值还是传址/检查输入参数的个数/传递参数/输出参数

    1   传值的方式      传址的方式区别 function f=ad(a,b) f=a+b: b=b+10; 命令行: a=2;b=5; f=ad(a,b) f= 7 b 5 并没有改变b的值原来 ...

  3. Matlab 手动实现plot——输入参数数可变的函数

    Matlab 输入参数数可变的函数 varargin 是函数定义语句中的一个输入变量,允许函数接受任意数量的输入参数. 在执行函数时,varargin 是一个 1 × N 1×N 1×N 元胞数组,其 ...

  4. SQL Server存储过程输入参数使用表值

    在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使比较困难的,可能需要很多的逻辑处理将这些表数据作为字符串或者XML传入. 在2008中提供了表值参数.使用表值参数,可以不 ...

  5. 终端输入参数:argparse和sys.argv[]的用法

    argparse的用法 fun_test.py的代码: #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Intr ...

  6. 调用script方法_自己撸一个代码生成器输入参数和方法

    在[CodeSmith快速入门之一:初次接触CodeSmith]中,我们实现了最简单的模板,但是模板中的内容无法由用户的输入决定. 假定你女朋友要你在新年的时候说10次"I LOVE YOU ...

  7. 使用getopts处理输入参数

    在编写shell脚本中,需要输入参数,使用过程中,getopts更加方便.可以很好的处理用户输入的参数和参数值. 参加如下一段脚本: #!/bin/bash while getopts ": ...

  8. 检查Bash Shell脚本中输入参数的存在

    我需要检查输入参数的存在. 我有以下脚本 if [ "$1" -gt "-1" ]then echo hi fi 我懂了 [: : integer expres ...

  9. 一、静态工厂的第四个优点是返回对象的类可以根据输入参数的不同而不同。...

    静态工厂的第四个优点是返回对象的类可以根据输入参数的不同而不同. 声明的返回类型的任何子类都是允许的. 返回对象的类也可以随每次发布而不同. EnumSet类(条目 36)没有公共构造方法,只有静态工 ...

最新文章

  1. 3000 字详解 Pandas 数据查询,建议收藏
  2. 安防业内人士对云存储未来的发展充满信心
  3. Flex 颜色对照表_16进制
  4. Windows下Libvirt Java API使用教程(三)- TLS认证访问和动态链接文件依赖
  5. C 语言编程 — 作用域和存储器
  6. 用友华表cell的程序发布
  7. 京东对话中国农民丰收节交易会 供应链下沉打通产销全链
  8. Win10系统浏览器字体乱码如何解决
  9. git push的时候报Unable to find remote helper for 'https'的错误
  10. Python程序设计学习笔记-语句与格式化输出
  11. Mac 电脑下搭建DOSBox汇编环境
  12. mysql命令导出表结构和数据_mysql命令导入\导出表结构或数据
  13. 川大《计算机应用基础》第二次作业,川大16秋《计算机应用基础》第二次作业答案.pdf...
  14. 数据库中COMMENT关键字的使用
  15. 数据库---学生选课查询案例---经典查询题
  16. 基于android的手机掌上购物
  17. java,jsp页面添加提示图以及提示音乐
  18. mac版微信复制多个消息
  19. 2020年中国储能材料产业链上中下游及未来发展趋势分析,电化学储能高速发展,储氢瓶、加氢站建设拉动需求「图」
  20. 凑齐三块国字号“招牌”,长沙要召唤智能汽车产业的“神龙”了

热门文章

  1. mysql load 导入csv或者unl 如果文件跟表的字段不一致的情况
  2. element表格样式优化
  3. 车路协同信息交互技术要求第 1 部分:路侧设施与云控平台
  4. JavaScript前端判断文件是否存在(案例详解)
  5. JavaScript window.alert
  6. 关于EVAL()函数(一)
  7. 如何把一条条的微信语音合成一个mp3文件?
  8. 便宜好用积分兑换商城系统必须具备这些功能
  9. 有什么好的降噪蓝牙耳机推荐,公认好用的降噪蓝牙耳机分享
  10. 大厂对ChatGPT的开发利用和评估案例收录