参数函数 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
總結
以上是生活随笔為你收集整理的参数函数 matlab,MATLAB的函数参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决JVM堆内存不断扩容导致服务器内存耗
- 下一篇: matlab 怎么嵌套循环,Matlab