0001 function x = dl2mat(dlx)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 if ~isstruct(dlx) && ~iscell(dlx) && ~isnumeric(dlx)
0018 up = MException('manopt:autodiff:dl2mat', ...
0019 'dl2mat should only accept structs, cells or arrays.');
0020 throw(up);
0021 end
0022
0023
0024 if isstruct(dlx)
0025 x = dl2mat_struct(dlx);
0026 elseif iscell(dlx)
0027 x = dl2mat_cell(dlx);
0028 else
0029 x = extractdata(dlx);
0030 end
0031
0032
0033 function x = dl2mat_struct(dlx)
0034 elems = fieldnames(dlx);
0035 nelems = numel(elems);
0036 for ii = 1:nelems
0037 if isstruct(dlx.(elems{ii}))
0038 x.(elems{ii}) = dl2mat_struct(dlx.(elems{ii}));
0039 elseif iscell(dlx.(elems{ii}))
0040 x.(elems{ii}) = dl2mat_cell(dlx.(elems{ii}));
0041 else
0042 x.(elems{ii}) = extractdata(dlx.(elems{ii}));
0043 end
0044 end
0045 end
0046
0047
0048 function x = dl2mat_cell(dlx)
0049 ncell = length(dlx);
0050 for ii = 1:ncell
0051 if isstruct(dlx{ii})
0052 x{ii} = dl2mat_struct(dlx{ii});
0053 elseif iscell(dlx{ii})
0054 x{ii} = dl2mat_cell(dlx{ii});
0055 else
0056 x{ii} = extractdata(dlx{ii});
0057 end
0058 end
0059 end
0060 end
0061
0062
0063