matlab函数参数命令,MATLAB的函数参数

本节介绍一下 MATLAB 的函数参数。具体的操作步骤如下:

确定函数参数数量

当调用一个函数时,所用的输入变量和输出变量的数量,在函数内是确定的。nargin 函数确定输入变量个数,nargout 函数确定输出变量个数。

示例1

nargin 函数和 nargout 函数的使用,具体程序如下:

function c = testarg1(a, b)

if(nargin == 1)

c = a .^ 2;

elseif(nargin == 2)

c = a + b;

end

如果用户使用一个参数调用 testarg 1 函数,则函数计算输入值的平方;如果使用两个参数调用 testarg 1 函数,则函数计算输入值之和。

传递可变数量的参数

varargin 和 varargout 函数允许编程者传递可变数量的变量给函数或者让函数返回可变数量的变量。

MATLAB 封装所有的输入变量为单元数组返回 varargin,封装所有的输出变量为单元数组返回 varargout。

示例2

varargin 函数的使用,具体程序如下:

function [xmin, ymin]=testvar(varargin)

for k = 1:length(varargin)

x(k) = varargin{k}(1) %单元数组索引

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

end

xmin =min(x);

ymin =max(y);

testvar 函数可以调用具有不同数量的输入变量,如下所示。

>> [a,b]=testvar([2 3],[1 5],[4 8],[6 5],[4 2],[2 3]); %函数共有6个输入

a=

1

b=

8

在函数执行过程中,varargin={[2 3],[1 5],[4 8],[6 5],[4 2],[2 3]},函数调用完毕 varargin 释放。

示例3

varargout 函数的使用,具体程序如下:

function [varargout] = testvar2(arrayin)

for k = 1:nargout

varargout{k} = arrayin(k,:); % Cell array assignment

end

testvar2 函数返回数组 arrayin 的每一行,如下所示。

>> a = [1 2; 3 4; 5 6; 7 8; 9 0];

>> [p1, p2, p3, p4, p5] = testvar2(a)

p1=

1 2

p2=

3 4

p3=

5 6

p4=

7 8

p5=

9 0

vargin 和 vargout 函数可以出现在输入输出变量列表的末尾,函数调用时必须指定需要的输入和输出变量,如下所示。

function [out1,out2] = example1(a,b,varargin)

function [i,j,varargout] = example2(x1,y1,x2,y2,flag)

向嵌套函数输入可变变量

1) varargin 和 varargout。

由于嵌套函数与主函数使用相同的函数工作区,因此,varargin 和 varargout 既可以表示嵌套函数的输入输出变量,也可以是主函数的输入输出变量,具体表示取决于程序中的变量声明。

如果嵌套函数在函数声明中包含 varargin 或 varargout,则在函数内部调用这两个变量时,变量内容为该函数的输入输出变量;如果嵌套函数声明中没有包含 varargin 或 varargout,而在该函数的上层函数声明中包含 varargin 或者 varargout,则当在该嵌套函数内部调用这两个变量时,变量内容为上层函数的输入输出变量。

示例4

varargin 和 varargout 的取值,具体程序如下:

function x = A(y, varargin) % Primary function A

B(nargin, y * rand(4))

function B(argsIn, z) % Nested function B

if argsIn >= 2

C(z, varargin{1}, 4.512, 1.729)

end

function C(varargin) % Nested function C

if nargin >= 2

x = varargin{1}

end

end % End nested function C

end % End nested function B

end % End nested function B

在函数 A 中,函数 C 嵌套在函数 B 中,函数 B 嵌套在函数 A 中,在函数 B 中调用 varargin{1} 表示主函数 A 的第二个变量(函数 A 的第一个参数为 y),而在函数 C 中的 varargin{1} 表示函数 B 传递给函数 C 的第一个参数,即 z。

函数 A 调用 nargin(B(nargin,y*rand(4))) 表示函数 A 的输入变量个数,在函数 C 中调用 nargin 表示函数 C 的输入变量个数。

2) nargin 和 nargout。

当在函数中调用 nargin 和 nargout 函数时,其值为该函数的输入或输出变量,而不需要进行声明。

示例5

nargin 和 nargout 的取值,具体程序如下。

function meters = convert2meters(miles, varargin)

% Converts MILES (plus optional FEET and INCHES input)

% values to METERS.

if nargin < 1 || nargin > 3

error('1 to 3 input arguments are required');

end

function feet = convert2Feet(argsIn)

% Nested function that converts miles to feet and adds in

% optional FEET argument.

feet = miles .* 5280;

if argsIn >= 2

feet = feet + varargin{1};

end

end % End nested function convert2Feet

function inches = convert2Inches(argsIn)

% Nested function that converts feet to inches and adds in

% optional INCHES argument.

inches = feet .* 12;

if argsIn == 3

inches = inches + varargin{2};

end

end % End nested function convert2Inches

feet = convert2Feet(nargin);

inches = convert2Inches(nargin);

meters = inches .* 2.54 ./ 100;

end % End primary function convert2meters

>> convert2meters(5)

ans =

8.0467e+003

>> convert2meters(5, 2000, 4.7)

ans =

8.6564e+003

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值