deal

Распределите входы к выходам

Описание

пример

Примечание

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

[A1,...,An] = C{:}
[B1,...,Bn] = S(:).field

Для получения дополнительной информации см. Разделенные списками , разделенными запятыми.

Однако в нескольких случаях deal может быть полезным, когда вам нужно несколько выходов от операции, которая обычно возвращает один вывод. Для примера можно использовать deal кому:

  • Присвойте значения нескольким камерам массива ячеек.

  • Присвойте значения полю нескалярного массива структур.

  • Возвращает несколько выходы от анонимной функции.

[B1,...,Bn] = deal(A1,...,An) копирует входные параметры A1,...,An и возвращает их в качестве выходных аргументов B1,...,Bn. Это то же, что и B1 = A1, …, Bn = An. В этом синтаксисе количество входа и выходных аргументов должно быть одинаковым.

[B1,...,Bn] = deal(A) копирует один входной параметр A и возвращает его как выходные аргументы B1,...,Bn. Это то же, что и B1 = A, …, Bn = A. В этом синтаксисе можно задать произвольное количество выходных аргументов.

Примеры

свернуть все

Создайте массив ячеек 1 на 3, камеры которого пусты.

C = cell(1,3)
C=1×3 cell array
    {0x0 double}    {0x0 double}    {0x0 double}

Создайте три переменные. Присвойте их значения камерам C при помощи deal. Синтаксис C{:} создает разделенный списками , разделенными запятыми камер, к содержимому которых можно получить доступ с помощью фигурных скобок. Можно рассматривать этот список как список выходных аргументов при вызове deal.

A1 = 100;
A2 = "foo";
A3 = 1:5;
[C{:}] = deal(A1,A2,A3)
C=1×3 cell array
    {[100]}    {["foo"]}    {[1 2 3 4 5]}

Если массив ячеек не существует, можно создать его, задав достаточно индексов, чтобы соответствовать назначенным значениям. Можно также использовать индексы для назначения значений подмножеству камер. Для примера, если C были массивом ячеек 1 на 6, этот синтаксис присваивал значения первым трём камерам.

[C{1:3}] = deal(A1,A2,A3)
C=1×3 cell array
    {[100]}    {["foo"]}    {[1 2 3 4 5]}

Сначала создайте массив структур 1 на 3 с одним полем.

S.a = [];
S(2).a = [];
S(3).a = [];
S.a
ans =

     []


ans =

     []


ans =

     []

Затем присвойте значения полям при помощи deal. Синтаксис S.a создает список , разделенный запятыми полей, по одному для каждой структуры массива структур. Можно рассматривать этот список как список выходных аргументов при вызове deal.

A1 = 100;
A2 = "foo";
A3 = 1:5;
[S.a] = deal(A1,A2,A3)
S=1×3 struct array with fields:
    a

S.a
ans = 100
ans = 
"foo"
ans = 1×5

     1     2     3     4     5

Если массив структур не существует, можно создать его, задав достаточно индексов, чтобы соответствовать назначенным значениям. Можно также использовать индексы для присвоения значений полям подмножества структур. Для примера, если S были массивом структур 1 на 6, этот синтаксис присваивал значения первым трем структурам.

[S(1:3).a] = deal(A1,A2,A3)
S=1×3 struct array with fields:
    a

S.a
ans = 100
ans = 
"foo"
ans = 1×5

     1     2     3     4     5

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

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

powers1234 = @(x) deal(x,x.^2,x.^3,x.^4)
powers1234 = function_handle with value:
    @(x)deal(x,x.^2,x.^3,x.^4)

Функции powers1234 и присвойте его выходы переменным. Необходимо назначить все выходы, которые deal возвращает.

[X1,X2,X3,X4] = powers1234(2)
X1 = 2
X2 = 4
X3 = 8
X4 = 16

Чтобы отменить нежелательные выходы, используйте ~ оператор.

[~,~,X3,X4] = powers1234(2)
X3 = 8
X4 = 16

Входные параметры

свернуть все

Входные массивы, где n - количество входов.

Выходные аргументы

свернуть все

Выходные массивы, где n - количество выходов.

Совет

  • Чтобы преобразовать массив ячеек в массив структур или массив структур в массив ячеек, используйте cell2struct и struct2cell функций, не deal.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

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