exponenta event banner

varargout

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

Синтаксис

Описание

пример

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

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

Продукция 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

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