/[MITgcm]/MITgcm_contrib/dfer/matlab_stuff/concatstruct.m
ViewVC logotype

Contents of /MITgcm_contrib/dfer/matlab_stuff/concatstruct.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Wed Mar 7 17:26:42 2018 UTC (7 years, 4 months ago) by dfer
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +20 -18 lines
Update with more flexible options

1 function NewField = concatstruct(OldField1,OldField2);
2
3 name1=fieldnames(OldField1);
4 name2=fieldnames(OldField2);
5
6 if size(name1,1) ~= size(name2,1)
7 disp('The 2 structures must have the same number of fields')
8 NewField=[];
9 return
10 end
11
12 NewField=[];
13
14 for i=1:size(name1,1)
15 if char(name1(i)) == char(name2(i))
16 nameloc = char(name1(i));
17 disp(['Field : ',nameloc])
18 %size(getfield(OldField1,nameloc));
19
20 if strcmp(nameloc,'T')
21 disp([' concatenating, 1d'])
22 NewField=setfield(NewField,nameloc, ...
23 cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
24 elseif strcmp(nameloc,'iter')
25 disp([' concatenating, 1d'])
26 NewField=setfield(NewField,nameloc, ...
27 cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
28 elseif ( strcmp(nameloc,'iters_read_from_file') | strcmp(nameloc,'iters_from_file') )
29 disp([' concatenating, 1d'])
30 NewField=setfield(NewField,nameloc, ...
31 cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
32 elseif ndims(getfield(OldField2,nameloc)) == 4
33 disp([' concatenating, 4d'])
34 NewField=setfield(NewField,nameloc, ...
35 cat(4,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
36
37 elseif ndims(getfield(OldField2,nameloc)) == 3
38 if length(getfield(OldField2,'iters_from_file')) == 1
39 disp([' concatenating, 4d'])
40 NewField=setfield(NewField,nameloc, ...
41 cat(4,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
42 else
43 disp([' concatenating, 3d'])
44 NewField=setfield(NewField,nameloc, ...
45 cat(3,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
46 end
47 elseif ndims(getfield(OldField2,nameloc)) == 2
48 disp([' concatenating, 2d'])
49 NewField=setfield(NewField,nameloc, ...
50 cat(3,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
51 % elseif strcmp(nameloc,'iters_from_file')
52 % disp([' concatenating, 1d'])
53 % NewField=setfield(NewField,nameloc, ...
54 % cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
55 else
56 disp([' replacing'])
57 NewField=setfield(NewField,nameloc,getfield(OldField1,nameloc));
58
59 end
60
61 end
62 end
63
64
65 return

  ViewVC Help
Powered by ViewVC 1.1.22