exponenta event banner

по рукам

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

Описание

пример

Примечание

В большинстве случаев вам не нужен 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++ с помощью MATLAB ® Coder™

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