Распределите входные параметры выходным параметрам
Начиная с программного обеспечения 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; ...
Используйте 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Используйте deal, чтобы получить содержимое всех полей имени в массиве структур:
A.name = 'Pat'; A.number = 176554; A(2).name = 'Tony'; A(2).number = 901325; [name1,name2] = deal(A(:).name) name1 = Pat name2 = Tony
Начиная с программного обеспечения MATLAB Version 7.0, можно, в большинстве случаев, получить доступ к содержимому массивов ячеек и полей структуры, не используя функцию deal. Эти две команды, показанные ниже, выполняют ту же операцию как используемые в предыдущих двух примерах, за исключением того, что эти команды не требуют deal.
[a,b,c,d] = C{:}
[name1,name2] = A(:).namedeal является самым полезным, когда используется с массивами ячеек и структурами через расширение списка, разделенного запятыми. Вот некоторые полезные конструкции:
Поле 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, ...
ячейка | cell2struct | celldisp | имена полей | iscell | isfield | isstruct | orderfields | rmfield | struct () | struct2cell