Распределите входные параметры выходным параметрам
Начиная с программного обеспечения 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(:).name
deal
является самым полезным, когда используется с массивами ячеек и структурами через расширение списка, разделенного запятыми. Вот некоторые полезные конструкции:
[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