Matlab系列之函数参数

前言

不知道你们是否有等待今天这篇的到来,这篇其中要讲到的函数参数,是个好东西,但是感觉初学的时候总会有点懵逼,希望你们能理解讲的东西,如果不理解,那就多看两遍吧,我也是这么学过来的,最近也在接受一下非电子类的培训,也是艰难的不行,感觉是真的去搬砖了一样,不过还是蛮有意思的,哈哈哈哈哈哈哈哈哈哈,开始进入今天的正题。

确定函数参数数量

当调用一个函数的时候,用到的输入和输出变量的数量在函数内部是确定好的,因此可用通过一个函数获得其个数,nargin函数就是用于确定输入变量个数,nargout显然就是用于确定输出变量个数的了,这两个理解起来就比较简单,直接搞个例程演示下效果就知道了,先创建一个函数,然后调用看结果。

程序:

%testarg1.m

function c=testarg1(a,b)

if(nargin==1)

c=a.^2;

elseif(nargin==2)

c=a*b;

end

end

结果:

可以看到当输入变量单个时,会进入乘方的区间,输入变量为两个,则进入相乘的区间,输出的话由于这边一直只有一个,所以就不搞什么演示了,可以自己弄下玩玩,不懂使用的话,直接命令行窗口“help nargout”,也可以看下下个部分的程序,会用到这个函数做下判断。

 

顺便教大家一个小技巧,如果代码编写好后,排版可能有点凌乱,可选中全部,然后按Ctrl+I,就会发现代码瞬间很有感觉了,当然这样也会有助于发现代码的错误,可以看下改变前后的效果,左边是原始的,右边是改变了的。

传递可变数量的参数

当你看到标题的时候,第一感觉是什么,是否有种拗口的感觉,反正我有这种感觉,学的时候,我也理解了蛮久,可能是那时候午觉还没睡醒,有点懵逼吧,哈哈哈哈哈哈哈哈。

这部分要讲到的两个函数名字和刚刚的两个有点像,分别是varargin和varargout,这个的作用和名字一样,简单点讲,就是传递可变数量的变量给函数或者让函数返回可变数量的变量,在Matlab中,封装所有的输入变量为单元数组返回varargin,封装所有的输出变量也为单元数组并返回varargout,看到这介绍,不知道你是否理解了,我觉得这个讲得已经蛮清晰了,如果还没看懂,就重复看几遍,或者看下接下来的程序演示,再返回看这边的表述,你肯定能理解!

程序:

function [xmin,ymax]=testvar(varargin)

for i=1:length(varargin)

    x(i)=varargin{i}(1);

    y(i)=varargin{i}(2);

end

xmin=min(x);

ymax=max(y);

end

结果:

从结果可以看到,输入了5个1行2列的矩阵给函数testvar,然后在调用函数的时候,将这5个输入的变量一起以单元数组的形式存入了varargin中,从函数内部代码对varargin的使用就可以看出,使用了花括号进行,x部分就是相当于每个输入的第1列,y就是每个输入的第2列,然后用取最小最大值的函数输出,这两个是MATLAB自带的函数,然后运行结果显然符合程序的功能。

演示完了varargin,再来看看varragout,千万别把自己绕迷糊了,一定要记住,该种函数都是以单元数组的形式进行的。

程序:

function [varargout]=testvar2(In)

for i=1:nargout

    varargout{i}=In(i,:);

end

end

结果:

程序的内容就是很简单的将输入的一个矩阵每一行都存入一个varargout,使用的方法就是先创建一个多维的矩阵,然后根据行数输入相同数量的输出变量,就是图中的p1~p5;结果也很明显,直接将5行数据分别输出到了各自的变量空间中。

 

本篇到此也结束了,看到该文的你,是不是理解了呢?

如果你是第一次看到这个,我想你可能会有点懵逼,或许连名字都会记不住,但是这都不重要,重要的是理解它要怎样用,能怎样用,有什么用就行了~

路漫漫其修远兮,一起加油!



欢迎关注~

 

  • 12
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值