Changeset 14630
- Timestamp:
- 04/17/13 11:17:36 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/io/structtonc.m
r14625 r14630 9 9 counter = counter+1; 10 10 11 %Datatype dependent switch 11 %Check that field is not empty 12 if isempty(field), 13 if(step==1), disp(['skipping ' fieldname ' (empty)...']); end 14 return; 15 end 16 17 %Double scalar 12 18 if isa(field,'double') & numel(field)==1, 13 19 if step==1, … … 16 22 netcdf.putVar(ncid,var_id(counter),field); 17 23 end 24 25 %Double vector 18 26 elseif isa(field,'double') & size(field,2)==1, 19 27 if step==1, … … 23 31 netcdf.putVar(ncid,var_id(counter),field); 24 32 end 33 34 %double matrix 25 35 elseif isa(field,'double') & size(field,2)>1, 26 36 if step==1, … … 31 41 netcdf.putVar(ncid,var_id(counter),transpose(field)); 32 42 end 33 elseif isa(field,'char') & ~isempty(field), 34 if step==1, 35 dim_id = netcdf.defDim(ncid,[fieldname '_size1'],numel(field)); 36 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id); 37 else 38 netcdf.putVar(ncid,var_id(counter),transpose(field)); 39 end 43 44 %string 45 elseif isa(field,'char') 46 if step==1, 47 dim_id = netcdf.defDim(ncid,[fieldname '_size1'],numel(field)); 48 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id); 49 else 50 netcdf.putVar(ncid,var_id(counter),transpose(field)); 51 end 52 53 %Boolean of size 1 40 54 elseif isa(field,'logical') & numel(field)==1, 41 55 if step==1, … … 44 58 netcdf.putVar(ncid,var_id(counter),int8(field)); 45 59 end 60 61 %Structures 46 62 elseif isa(field,'struct'), 47 63 subfields = fields(field); … … 58 74 end 59 75 end 76 77 %Cell 78 elseif isa(field,'cell'), 79 for i=1:length(field), 80 [var_id,counter] = structtonc(ncid,[fieldname '{' num2str(i) '}'],field{i},depth+1,var_id,counter,step); 81 end 82 83 %Objects 60 84 elseif isobject(field), 61 85 %First we need to keep track of the object class name 62 [var_id,counter] = structtonc(ncid,[fieldname ' .' subfields{i} '_class'],class(field(n).(subfields{i})),depth,var_id,counter,step);86 [var_id,counter] = structtonc(ncid,[fieldname '_class'],class(field),depth,var_id,counter,step); 63 87 subfields = fields(field); 64 88 for i=1:length(subfields), … … 66 90 end 67 91 else 68 disp(['skipping ' fieldname ' ...']);92 disp(['skipping ' fieldname ' (format not supported)...']); 69 93 end
Note:
See TracChangeset
for help on using the changeset viewer.