varargin

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

Синтаксис

Описание

пример

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

Когда функция выполняется, varargin является массивом ячеек N 1 байт, где 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

В файле в рабочей папке создайте обертку для функции построения графика, которая строит график красной линии. The 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