varargout

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

Синтаксис

varargout

Описание

пример

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

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

Примеры

свернуть все

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

Вызовите функцию с 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)

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

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

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

Для просмотра документации необходимо авторизоваться на сайте