参数函数 matlab,MATLAB的函数参数
本節(jié)介紹一下 MATLAB 的函數(shù)參數(shù)。具體的操作步驟如下:
確定函數(shù)參數(shù)數(shù)量
當(dāng)調(diào)用一個函數(shù)時,所用的輸入變量和輸出變量的數(shù)量,在函數(shù)內(nèi)是確定的。nargin 函數(shù)確定輸入變量個數(shù),nargout 函數(shù)確定輸出變量個數(shù)。
示例1
nargin 函數(shù)和 nargout 函數(shù)的使用,具體程序如下:
function c = testarg1(a, b)
if(nargin == 1)
c = a .^ 2;
elseif(nargin == 2)
c = a + b;
end
如果用戶使用一個參數(shù)調(diào)用 testarg 1 函數(shù),則函數(shù)計算輸入值的平方;如果使用兩個參數(shù)調(diào)用 testarg 1 函數(shù),則函數(shù)計算輸入值之和。
傳遞可變數(shù)量的參數(shù)
varargin 和 varargout 函數(shù)允許編程者傳遞可變數(shù)量的變量給函數(shù)或者讓函數(shù)返回可變數(shù)量的變量。
MATLAB 封裝所有的輸入變量為單元數(shù)組返回 varargin,封裝所有的輸出變量為單元數(shù)組返回 varargout。
示例2
varargin 函數(shù)的使用,具體程序如下:
function [xmin, ymin]=testvar(varargin)
for k = 1:length(varargin)
x(k) = varargin{k}(1) %單元數(shù)組索引
y(k) = varargin{k}(2);
end
xmin =min(x);
ymin =max(y);
testvar 函數(shù)可以調(diào)用具有不同數(shù)量的輸入變量,如下所示。
>> [a,b]=testvar([2 3],[1 5],[4 8],[6 5],[4 2],[2 3]); %函數(shù)共有6個輸入
a=
1
b=
8
在函數(shù)執(zhí)行過程中,varargin={[2 3],[1 5],[4 8],[6 5],[4 2],[2 3]},函數(shù)調(diào)用完畢 varargin 釋放。
示例3
varargout 函數(shù)的使用,具體程序如下:
function [varargout] = testvar2(arrayin)
for k = 1:nargout
varargout{k} = arrayin(k,:); % Cell array assignment
end
testvar2 函數(shù)返回數(shù)組 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 函數(shù)可以出現(xiàn)在輸入輸出變量列表的末尾,函數(shù)調(diào)用時必須指定需要的輸入和輸出變量,如下所示。
function [out1,out2] = example1(a,b,varargin)
function [i,j,varargout] = example2(x1,y1,x2,y2,flag)
向嵌套函數(shù)輸入可變變量
1) varargin 和 varargout。
由于嵌套函數(shù)與主函數(shù)使用相同的函數(shù)工作區(qū),因此,varargin 和 varargout 既可以表示嵌套函數(shù)的輸入輸出變量,也可以是主函數(shù)的輸入輸出變量,具體表示取決于程序中的變量聲明。
如果嵌套函數(shù)在函數(shù)聲明中包含 varargin 或 varargout,則在函數(shù)內(nèi)部調(diào)用這兩個變量時,變量內(nèi)容為該函數(shù)的輸入輸出變量;如果嵌套函數(shù)聲明中沒有包含 varargin 或 varargout,而在該函數(shù)的上層函數(shù)聲明中包含 varargin 或者 varargout,則當(dāng)在該嵌套函數(shù)內(nèi)部調(diào)用這兩個變量時,變量內(nèi)容為上層函數(shù)的輸入輸出變量。
示例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
在函數(shù) A 中,函數(shù) C 嵌套在函數(shù) B 中,函數(shù) B 嵌套在函數(shù) A 中,在函數(shù) B 中調(diào)用 varargin{1} 表示主函數(shù) A 的第二個變量(函數(shù) A 的第一個參數(shù)為 y),而在函數(shù) C 中的 varargin{1} 表示函數(shù) B 傳遞給函數(shù) C 的第一個參數(shù),即 z。
函數(shù) A 調(diào)用 nargin(B(nargin,y*rand(4))) 表示函數(shù) A 的輸入變量個數(shù),在函數(shù) C 中調(diào)用 nargin 表示函數(shù) C 的輸入變量個數(shù)。
2) nargin 和 nargout。
當(dāng)在函數(shù)中調(diào)用 nargin 和 nargout 函數(shù)時,其值為該函數(shù)的輸入或輸出變量,而不需要進(jìn)行聲明。
示例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
總結(jié)
以上是生活随笔為你收集整理的参数函数 matlab,MATLAB的函数参数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决JVM堆内存不断扩容导致服务器内存耗
- 下一篇: matlab 怎么嵌套循环,Matlab