varargout

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

Синтаксис

Описание

пример

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

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

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

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

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

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