varargin

Список входных параметров переменной длины

Синтаксис

Описание

пример

varargin входная переменная в функциональном операторе определения, который позволяет функции принять любое количество входных параметров. Задать varargin использование символов нижнего регистра, и включает его как последний входной параметр после любых явным образом заявленных входных параметров.

Когда функция выполняется, varargin 1 N массивом ячеек, где N является количеством входных параметров, которые функция получает после явным образом заявленных входных параметров. Однако, если функция не получает входных параметров после явным образом заявленных входных параметров, то varargin массив пустой ячейки.

Примеры

развернуть все

Задайте функцию в файле с именем acceptVariableNumInputs.m это принимает переменное количество входных параметров и отображает значения каждого входа.

type acceptVariableNumInputs
function acceptVariableNumInputs(varargin)
    disp("Number of input arguments: " + nargin)
    celldisp(varargin)
end

Вызовите функцию с несколькими входными параметрами.

acceptVariableNumInputs(ones(3),'some text',pi)
Number of input arguments: 3
 
varargin{1} =
 
     1     1     1
     1     1     1
     1     1     1

 
 
varargin{2} =
 
some text
 
 
varargin{3} =
 
    3.1416

 

Задайте функцию в файле с именем definedAndVariableNumInputs.m это ожидает два входных параметров и принимает дополнительное количество входных параметров.

type definedAndVariableNumInputs
function definedAndVariableNumInputs(X,Y,varargin)
    disp("Total number of input arguments: " + nargin)
    
    formatSpec = "Size of varargin cell array: %dx%d";
    str = compose(formatSpec,size(varargin));
    disp(str)

end

Вызовите функцию с несколькими входными параметрами.

definedAndVariableNumInputs(7,pi,rand(4),datetime('now'),'hello')
Total number of input arguments: 5
Size of varargin cell array: 1x3

Вызовите функцию с двумя входными параметрами. varargin массив пустой ячейки.

definedAndVariableNumInputs(13,42)
Total number of input arguments: 2
Size of varargin cell array: 0x0

Задайте функцию в файле с именем variableNumInputAndOutput.m это принимает переменное количество вводов и выводов.

type variableNumInputAndOutput
function varargout = variableNumInputAndOutput(varargin)
    disp(['Number of provided inputs: ' num2str(length(varargin))])
    disp(['Number of requested outputs: ' num2str(nargout)])
    
    for k = 1:nargout
        varargout{k} = k;
    end
end

Вызовите функцию с двумя входными параметрами и тремя выходными параметрами.

[d,g,p] = variableNumInputAndOutput(6,'Nexus')
Number of provided inputs: 2
Number of requested outputs: 3
d = 1
g = 2
p = 3

Вызовите функцию снова без вводов или выводов.

variableNumInputAndOutput
Number of provided inputs: 0
Number of requested outputs: 0

В файле в вашей рабочей папке создайте обертку в функцию построения графика, которая строит красную линию. redplot функция признает, что входной параметр переменной длины перечисляет, и возвращает список выходных аргументов переменной длины. Это устанавливает цвет линии на красный, и вперед другие входные значения к plot функция. Эта функциональная обертка позволяет вам передать redplot те же входные параметры как plot и не указывают, что цвет линии является красным.

type redplot.m
function varargout = redplot(varargin)
    [varargout{1:nargout}] = plot(varargin{:},'Color',[1,0,0]);
end

Используйте redplot построить график.

x = 0:pi/100:2*pi;
y = sin(x);
redplot(x,y)

Figure contains an axes object. The axes object contains an object of type line.

Вызовите redplot снова, и задайте аргументы ввода и вывода, чтобы передать plot функция.

h = redplot(x,y,'Marker','o','MarkerEdgeColor','green'); 

Figure contains an axes object. The axes object contains an object of type line.

Расширенные возможности

Представлено до R2006a