соглашение

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

Начиная с программного обеспечения MATLAB® Version 7.0, можно получить доступ к содержимому массивов ячеек и полей структуры, не используя функцию deal. Смотрите Пример 3, ниже.

Синтаксис

[Y1, Y2, Y3...] = соглашение (X)
[Y1, Y2, Y3...] = соглашение (X1, X2, X3...)
Поле S.] = соглашение (X)
X:}] = соглашение (field)
[Y1, Y2, Y3...] = соглашение (X {:})
[Y1, Y2, Y3...] = соглашение (S.field)

Описание

[Y1, Y2, Y3, ...] = deal(X) копирует единственный входной параметр во все требуемые выходные параметры. Это совпадает с Y1 = X, Y2 = X, Y3 = X, ...

[Y1, Y2, Y3, ...] = deal(X1, X2, X3, ...) совпадает с Y1 = X1; Y2 = X2; Y3 = X3; ...

Примеры

Пример 1 - данные присвоения от массива ячеек

Используйте deal, чтобы скопировать содержимое массива ячеек с 4 элементами в четыре отдельных выходных переменные.

C = {rand(3) ones(3,1) eye(3) zeros(3,1)};
[a,b,c,d] = deal(C{:})

a =
    0.9501   0.4860   0.4565
    0.2311   0.8913   0.0185
    0.6068   0.7621   0.8214

b = 
    1
    1
    1

c = 
    1   0   0
    0   1   0
    0   0   1

d = 
    0
    0
    0

Пример 2 - данные присвоения от полей структуры

Используйте deal, чтобы получить содержимое всех полей имени в массиве структур:

A.name = 'Pat'; A.number = 176554;
A(2).name = 'Tony'; A(2).number = 901325;
[name1,name2] = deal(A(:).name)

name1 =
   Pat

name2 =
   Tony

Пример 3 - Выполнение Того же самого Без соглашения

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

[a,b,c,d] = C{:}
[name1,name2] = A(:).name

Советы

deal является самым полезным, когда используется с массивами ячеек и структурами через расширение списка, разделенного запятыми. Вот некоторые полезные конструкции:

Поле S.] = соглашение (X) устанавливает все поля с полем имени в массиве структур S к значению X. Если S не существует, используйте [S (1:m).field] = соглашение (X).

X:}] = соглашение (А.филд) копирует значения поля с полем имени к массиву ячеек X. Если X не существует, используйте [X {1:m}] = соглашение (field).

[Y1, Y2, Y3, ...] = deal(X{:}) копирует содержимое массива ячеек X к отдельным переменным Y1, Y2, Y3, ...

[Y1, Y2, Y3, ...] = deal(S.field) копирует содержимое полей с именем field к отдельным переменным Y1, Y2, Y3, ...

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

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

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

Была ли эта тема полезной?