|
73 | 73 | newitem=table2jd(item,varargin{:}); |
74 | 74 | elseif(isa(item,'digraph') || isa(item,'graph')) |
75 | 75 | newitem=graph2jd(item,varargin{:}); |
76 | | -elseif(~isoctavemesh) |
77 | | - newitem=any2jd(item,varargin{:}); |
| 76 | +elseif(isobject(item)) |
| 77 | + newitem=matlabobject2jd(item,varargin{:}); |
78 | 78 | else |
79 | 79 | newitem=item; |
80 | 80 | end |
|
128 | 128 | %%------------------------------------------------------------------------- |
129 | 129 | function newitem=mat2jd(item,varargin) |
130 | 130 |
|
131 | | -if(isempty(item) || isa(item,'string') || ischar(item) || (isvector(item) && isreal(item) && ~issparse(item))) |
| 131 | +if(isempty(item) || isa(item,'string') || ischar(item) || ... |
| 132 | + (isvector(item) && isreal(item) && ~issparse(item)) || ... |
| 133 | + jsonopt('NestArray',0,varargin{:})) |
132 | 134 | newitem=item; |
133 | 135 | return; |
134 | 136 | end |
|
142 | 144 |
|
143 | 145 | N=@(x) N_(x,varargin{:}); |
144 | 146 |
|
145 | | -newitem=struct(N('_ArraySize_'),size(item),N('_ArrayType_'),class(item)); |
| 147 | +newitem=struct(N('_ArrayType_'),class(item),N('_ArraySize_'),size(item)); |
146 | 148 |
|
147 | 149 | if(isreal(item)) |
148 | 150 | if(issparse(item)) |
149 | 151 | fulldata=full(item(find(item))); |
150 | 152 | newitem.(N('_ArrayIsSparse_'))=true; |
151 | 153 | newitem.(N('_ArrayZipSize_'))=[2+(~isvector(item)),length(fulldata)]; |
152 | 154 | if(isvector(item)) |
153 | | - newitem.(N('_ArrayData_'))=[find(item)', fulldata(:)']; |
| 155 | + newitem.(N('_ArrayData_'))=[find(item(:))', fulldata(:)']; |
154 | 156 | else |
155 | 157 | [ix,iy]=find(item); |
156 | 158 | newitem.(N('_ArrayData_'))=[ix(:)' , iy(:)', fulldata(:)']; |
|
166 | 168 | newitem.(N('_ArrayIsSparse_'))=true; |
167 | 169 | newitem.(N('_ArrayZipSize_'))=[3+(~isvector(item)),length(fulldata)]; |
168 | 170 | if(isvector(item)) |
169 | | - newitem.(N('_ArrayData_'))=[find(item)', real(fulldata(:)'), imag(fulldata(:)')]; |
| 171 | + newitem.(N('_ArrayData_'))=[find(item(:))', real(fulldata(:))', imag(fulldata(:))']; |
170 | 172 | else |
171 | 173 | [ix,iy]=find(item); |
172 | | - newitem.(N('_ArrayData_'))=[ix(:)' , iy(:)' , real(fulldata(:)'), imag(fulldata(:)')]; |
| 174 | + newitem.(N('_ArrayData_'))=[ix(:)' , iy(:)' , real(fulldata(:))', imag(fulldata(:))']; |
173 | 175 | end |
174 | 176 | else |
175 | 177 | newitem.(N('_ArrayZipSize_'))=[2,numel(item)]; |
176 | | - newitem.(N('_ArrayData_'))=[real(item(:)'), imag(item(:)')]; |
| 178 | + newitem.(N('_ArrayData_'))=[real(item(:))', imag(item(:))']; |
177 | 179 | end |
178 | 180 | end |
179 | 181 |
|
|
198 | 200 | function newitem=table2jd(item,varargin) |
199 | 201 |
|
200 | 202 | newitem=struct; |
201 | | -newitem(N_('_TableRows_',varargin{:}))=item.Properties.RowNames'; |
202 | | -newitem(N_('_TableCols_',varargin{:}))=item.Properties.VariableNames; |
203 | | -newitem(N_('_TableRecords_',varargin{:}))=table2cell(item); |
| 203 | +newitem.(N_('_TableRows_',varargin{:}))=item.Properties.RowNames'; |
| 204 | +newitem.(N_('_TableCols_',varargin{:}))=item.Properties.VariableNames; |
| 205 | +newitem.(N_('_TableRecords_',varargin{:}))=table2cell(item); |
204 | 206 |
|
205 | 207 | %%------------------------------------------------------------------------- |
206 | 208 | function newitem=graph2jd(item,varargin) |
|
229 | 231 | newitem.(N_('_GraphEdges_',varargin{:}))=edgenodes; |
230 | 232 | end |
231 | 233 |
|
| 234 | +%%------------------------------------------------------------------------- |
| 235 | +function newitem=matlabobject2jd(item,varargin) |
| 236 | +try |
| 237 | + if numel(item) == 0 %empty object |
| 238 | + newitem = struct(); |
| 239 | + elseif numel(item) == 1 % |
| 240 | + newitem = char(item); |
| 241 | + else |
| 242 | + propertynames = properties(item); |
| 243 | + for p = 1:numel(propertynames) |
| 244 | + for o = numel(item):-1:1 % aray of objects |
| 245 | + newitem(o).(propertynames{p}) = item(o).(propertynames{p}); |
| 246 | + end |
| 247 | + end |
| 248 | + end |
| 249 | +catch |
| 250 | + newitem=any2jd(item,varargin{:}); |
| 251 | +end |
| 252 | + |
232 | 253 | %%------------------------------------------------------------------------- |
233 | 254 | function newitem=any2jd(item,varargin) |
234 | 255 |
|
|
0 commit comments