Распределите входные параметры выходным параметрам
Начиная с программного обеспечения MATLAB® Version 7.0, можно получить доступ к содержимому массивов ячеек и полей структуры, не используя функцию deal. Смотрите Пример 3, ниже.
[Y1, Y2, Y3, ...] = deal(X)
[Y1, Y2, Y3, ...] = deal(X1, X2, X3,
...)
[S.field] = deal(X)
[X{:}] = deal(A.field)
[Y1, Y2, Y3, ...] = deal(X{:})
[Y1, Y2, Y3, ...] = deal(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.field] = deal(X) наборы все поля с именем field в массиве структур S к значению X. Если S не существует, используйте [S(1:m).field] = deal(X).
[X{:}] = deal(A.field) копирует значения поля с именем field к массиву ячеек X. Если X не существует, используйте [X{1:m}] = deal(A.field).
[Y1, Y2, Y3, ...] = deal(X{:}) копирует содержимое массива ячеек X к отдельным переменным Y1, Y2, Y3, ...
[Y1, Y2, Y3, ...] = deal(S.field) копирует содержимое полей с именем field к отдельным переменным Y1, Y2, Y3, ...
cell | cell2struct | celldisp | fieldnames | iscell | isfield | isstruct | orderfields | rmfield | struct | struct2cell