输入参数varargin

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

  一种特别的输入参数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数组的方式来获取可变参数的信息。

相关文章
|
存储 编解码 iOS开发
视频文件格式:MOV与MP4格式的区别是什么?
视频文件有多种格式,很多人在下载时不知道该选择哪种文件格式。不同格式有不同特点,各自有优缺点。本文将详细介绍常见的MOV和MP4的特点与区别,以供读者了解及选择。
8059 2
视频文件格式:MOV与MP4格式的区别是什么?
|
安全 Java Apache
如何安装与使用Spring Boot 2.2.x、Spring Framework 5.2.x与Apache Shiro 1.7进行高效开发
【7月更文第1天】在现代Java Web开发领域,Spring Boot以其简化配置、快速开发的特点备受青睐。结合Spring Framework的成熟与Apache Shiro的强大权限控制能力,我们可以轻松构建安全且高效的Web应用。本篇文章将指导你如何安装并使用Spring Boot 2.2.x、Spring Framework 5.2.x以及Apache Shiro 1.7来构建一个具备基础权限管理功能的项目。
360 0
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之pyODPS导入python包的时候报错,该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
343 0
|
数据可视化 搜索推荐 vr&ar
增强现实(AR)技术在教育领域的应用研究
增强现实(AR)技术在教育领域的应用研究
588 0
|
存储 人工智能 数据可视化
伙伴云连续2年入选Gartner《中国分析平台市场指南》,数据分析能力遥遥领先
伙伴云作为中国分析与商业智能平台代表性厂商,因出色的数据分析能力,入选Gartner2023《中国分析平台市场指南》(《Market Guide for Analytics Platforms, China》,以下简称“指南”),成为入选该报告中唯一一家零代码厂商。
321 0
|
缓存 Java 数据处理
定时任务调度springTask和cron表达式
定时任务调度springTask和cron表达式
463 0
定时任务调度springTask和cron表达式
|
Shell 网络安全
Aix6.1安装openssh
一、软件下载 1、官方网站下载: openssl IBM官方网站下载:https://www14.software.ibm.com/webapp/iwm/web/reg/download.do?source=aixbp&S_PKG=openssl&lang=en_US# openssh下载:http://sourceforge.
993 0
|
Kubernetes 监控 安全
K8s微服务自动化部署容器(Rancher流水线)
想起了k8s微服务的成熟方案,不仅可以自动重启还可以监控容器运行状态,也可以集成自动化部署,于是找了一些资料将之前接触过的rancher用了起来,首先要做的就是简化安装方式,下面是我的一些过程,同时也可以给大家提供参考。
1465 0
K8s微服务自动化部署容器(Rancher流水线)
|
机器学习/深度学习 人工智能 BI
重磅系列文章|UI2Code智能生成Flutter代码--整体设计篇
UI2CODE项目是闲鱼技术团队研发的一款通过机器视觉理解+AI人工智能将UI视觉图片转化为端侧代码的工具。
7220 0
|
弹性计算 开发工具 对象存储
OSS访问域名使用规则
OSS域名构成规则 针对OSS的网络请求,除了GetService这个API以外,其他所有请求的域名都是带有指定Bucket信息的三级域名组成的。 访问域名规则:BucketName.Endpoint。
11252 1