varargin

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

Синтаксис

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
 
ans{1} =
 
     1     1     1
     1     1     1
     1     1     1

 
 
ans{2} =
 
some text
 
 
ans{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

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

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

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

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

Была ли эта тема полезной?