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"]}    {1x5 double}

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

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

Сначала создайте 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