varargin_epoll是什么意思

varargin_epoll是什么意思matlab中varargin简介varargin可以看做“Variablelengthinputargumentlist”的缩写。在matlab中,varargin提供了一种函数可变参数列表机制。就是说,使用了“可变参数列表机制”的函数允许调用者调用该函数时根据需要来改变输入参数的个数。matlab中很多内建函数和工具箱函数都使用了这种机制。比如图像处理工具箱中的imsh

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定
matlab中varargin简介

varargin可以看做“Variable length input argument list”的缩写。在matlab中, varargin提供了一种函数可变参数列表机制。 就是说, 使用了“可变参数列表机制”的函数允许调用者调用该函数时根据需要来改变输入参数的个数。

matlab中很多内建函数和工具箱函数都使用了这种机制。 比如图像处理工具箱中的imshow函数。 该函数允许我们根据图像数据特点来调用。

比如, 显示一张真彩色位图, 我们可以简单的使用:

imshow(RGB), 其中RGB是通过imread函数读取图像获得的图像数据。这里我们只给了一个参数。

但是在显示索引图像时, 因为索引图像使用了调色板,因此为了正确显示图像, 除了图像数据外, 我们还要额外指定显示图像所使用的调色板(一般也由imread函数获得),这样就出现了以下的调用格式:

imshow(X, map)

那么, 这种机制是怎么实现的呢? 借助于varargin。

相关:varargout、nargin

下面我们来看一个简单的例子,(本例子参考了matlab中varargin文档)

function retvar = vartest(varargin)
optargin = size(varargin, 2); % number of inputs.
ndims(varargin)
varargin
stdargin = nargin - optargin; % 'nargin' in matlab means number of input arguments.
fprintf('Number of inputs: %d\n', nargin);
fprintf('Inputs from individual arguments: %d\n', stdargin)
for k = 1:size(varargin, 2)
    fprintf('%d: %d\n', k, varargin{k});
end

end

Jetbrains全家桶1年46,售后保障稳定

这里定义了一个函数, 利用了可变参数列表。然后我们这样调用这个函数:

>> vartest(1, 2, 3)

ans = 2

varargin =

    [1]    [2]    [3]

Number of inputs: 3

Inputs from individual arguments: 0

1: 1

2: 2

3: 3

我们看到, 这里varargin是一个1*3的二维矩阵, 这个矩阵即我们调用这个函数时传入的参数列表。通过size(varargin, 2)获得的varargin第二维的尺寸(即varargin的列数)就是我们传入的参数个数。stdargin = nargin – optargin;这一句是获取可变参数列表从第几个参数开始的。 其中, nargin也是matlab中的, 不能拼错了, nargin的值即传入的所有参数个数。

也许你会问, 咦? 这不就是size(varargin, 2)吗?

对于本例,的确这样子。

但是有的函数, 参数列表是这样的:

function vartest_2(arg1, argb, varargin)

optargin = size(varargin, 2); % number of inputs.
stdargin = nargin - optargin; % 'nargin' in matlab means number of input arguments.
fprintf('Number of inputs: %d\n', nargin);
fprintf('Inputs from individual arguments: %d\n', stdargin)
for k = 1:size(varargin, 2)
    fprintf('%d: %d\n', k, varargin{k});
end

end

这次我们调用:

>> vartest_2(1, 2, 3)

Number of inputs: 3

Inputs from individual arguments: 2

1: 3

你会看到, 由于vartest_2的第一二个参数不是可变参数列表的一部分, 可变参数列表从第三个参数开始。因此

nargin等于3, 而size(varargin, 2) 等于1。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200729.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 小米5 Android 8.0解bl,小米解BL锁超详细的图文教程「建议收藏」

    小米5 Android 8.0解bl,小米解BL锁超详细的图文教程「建议收藏」BL锁全称bootloader锁,其中bootloader中文名称为“启动加载”,其主要作用是为了保护用户的隐私数据安全,在日常使用的时候感受不到BL锁的存在,但是如果你要对手机进行刷机的话,第一步就是必须先解除手机里的BL锁,部分机子不需要解BL锁,手机是否需要解锁请到手机官方网站进行查看或者咨询。解BL锁会清除手机所有的数据,相当于手机恢复出厂设置,记得提前备份好手机里的所有资料以下是小米解锁…

    2022年5月20日
    69
  • java开发是什么_java开发到底是做什么的

    java开发是什么_java开发到底是做什么的1java开发到底是做什么的在互联网迅猛发展的时代,而我们如果对互联网一无所知,那就相当于文盲。所以很多人都想去了解它,去学习他。而作为互联网的产物——java,是一门非常不错的技术,学精通之后,你的未来不会再担心就业。那么下面小编给大家说说java开发到底是做什么的,希望能对你有些帮助。桌面级应用:尤其是需要跨平台的桌面级应用程序。桌面级应用:简单的说就是主要功能都在我们本机上运行的程序,比如w…

    2022年7月9日
    18
  • pytest指定用例_测试用例怎么编写

    pytest指定用例_测试用例怎么编写前言测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果.有些同学在写用例的时候,用例写了先后顺序,有先后顺序后,后面还会有新的问题(如:上个用例返回

    2022年7月28日
    10
  • 详解Java中的clone方法

    详解Java中的clone方法

    2022年3月1日
    48
  • csgo有开箱网站吗_csgo开箱值吗

    csgo有开箱网站吗_csgo开箱值吗csgo靠谱的开箱网站有哪些?csgo开箱网站大全官网直达链接优惠码/推广码网站状态incsgocsgogo直接取回skinsdogcsgogo直接取回88skinscsgo直接取回skskinscsgogo直接取回npskinscsgogo直接取回fateskinscsgo直接取回yskins暂无可取回coolkaixiangcsgo直接取回piggycasecsgogo可取回box818c

    2022年10月6日
    2
  • UpdatePanel的用法详解

    UpdatePanel的用法详解Asp.netUpdatePanel允许用户构建一个丰富的,以客户端为中心的应用程序,引用UpdatePanel控件,能够实现页面的部分刷新,一个包含scriptManage和UpdatePan

    2022年7月2日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号