varargout

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

Синтаксис

Описание

пример

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

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

Примеры

расширить все

Задайте функцию в файле с именем returnVariableNumOutputs.m который возвращает выходной вектор размера s и переменное количество дополнительных выходов.

type returnVariableNumOutputs
function [s,varargout] = returnVariableNumOutputs(x)
    nout = max(nargout,1) - 1;
    s = size(x);
    for k = 1:nout
        varargout{k} = s(k);
    end
end

Выходные s содержит размерности массива входа x. Дополнительные выходы соответствуют отдельным размерностям внутри s.

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

A = rand(4,5,2);
[s,rows,cols] = returnVariableNumOutputs(A)
s = 1×3

     4     5     2

rows = 4
cols = 5

Вызовите функцию снова с помощью четырехмерного массива и запросите четыре выходов. На этот раз функция не возвращает индивидууму четвертую размерность.

A = zeros(1,4,5,2);
[s,dim1,dim2,dim3] = returnVariableNumOutputs(A)
s = 1×4

     1     4     5     2

dim1 = 1
dim2 = 4
dim3 = 5

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

s = returnVariableNumOutputs(A)
s = 1×4

     1     4     5     2

Задайте функцию в файле с именем 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