exponenta event banner

varargin

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

Синтаксис

Описание

пример

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

Когда функция выполняется, varargin - массив ячеек 1-by-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. The axes contains an object of type line.

Звонить redplot снова и укажите входные и выходные аргументы для пересылки в plot функция.

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

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

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

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