function str = cell2str(C,n) % function str = cell2str(C,n) % Convert cell structure to string such that C = eval(str). % % [+GenLib General Purpose Library+] Swiss Plasma Center EPFL Lausanne 2022. All rights reserved. assert(iscell(C),'C must be a cell'); assert(ndims(C)<=2,'Cell arrays with more than 2 dimensions are not supported'); [nrow,ncol] = size(C); str = '{'; for ii=1:nrow for jj=1:ncol celldata = C{ii,jj}; if isstruct(celldata) structstrcell = struct2str(celldata,n); % returns cell array of strings datastr = ''; for kk = 1:numel(structstrcell) datastr = [datastr,structstrcell{kk},'\n']; %#ok<AGROW> end datastr = sprintf(datastr); % contatenate them to get a single string again elseif iscell(celldata) datastr = cell2str(celldata,n); % recursive call else datastr = field2str(celldata,n); end str = [str,datastr]; %#ok<AGROW> if jj == ncol && ii~=nrow str = [str,';']; %#ok<AGROW> elseif jj~=ncol str = [str,',']; %#ok<AGROW> end end end str = [str,'}']; end function datastr = field2str(data,n) if isnumeric(data) || islogical(data) datastr = mat2str(data,n,'class'); elseif ischar(data) datastr = ['''',data,'''']; else error('%s datatype not supported:',class(data)) end end