1 |
gforget |
1.1 |
function [alldiag]=alldiag_load(dirIn,suffIn,timeStep); |
2 |
|
|
|
3 |
|
|
%get list of files |
4 |
|
|
listFiles=dir([dirIn '/diags_' suffIn '*.mat']); |
5 |
|
|
%get time steps and sort listFiles |
6 |
|
|
listSteps=[]; for tt=1:length(listFiles); listSteps=[listSteps;str2num(listFiles(tt).name(13:end-4))]; end; |
7 |
|
|
[listSteps,ii]=sort(listSteps); |
8 |
|
|
listFiles=listFiles(ii); |
9 |
|
|
%compute actual times |
10 |
|
|
nTimes=length(listSteps); |
11 |
|
|
listTimes=listSteps*timeStep/86400; |
12 |
|
|
%initialize alldiag |
13 |
|
|
alldiag=open([dirIn listFiles(1).name]); |
14 |
|
|
listDiags=fieldnames(alldiag); |
15 |
|
|
%loop and concatenate |
16 |
|
|
for tt=2:length(listSteps); |
17 |
|
|
tmpdiag=open([dirIn listFiles(tt).name]); |
18 |
|
|
for ii=1:length(listDiags); |
19 |
|
|
%get data: |
20 |
|
|
eval(['tmp1=tmpdiag.' listDiags{ii} '; tmp2=alldiag.' listDiags{ii} ';']); |
21 |
|
|
%determine the time dimension: |
22 |
|
|
if strcmp(class(tmp1),'gcmfaces'); nDim=size(tmp1{1}); else; nDim=size(tmp1); end; |
23 |
|
|
if ~isempty(find(nDim==0)); nDim=0; |
24 |
|
|
elseif nDim(end)==1; nDim=length(nDim)-1; |
25 |
|
|
else; nDim=length(nDim); |
26 |
|
|
end; |
27 |
|
|
%concatenate along the time dimension: |
28 |
|
|
if nDim>0; tmp2=cat(nDim+1,tmp2,tmp1); eval(['alldiag.' listDiags{ii} '=tmp2;']); end; |
29 |
|
|
end; |
30 |
|
|
end; |
31 |
|
|
%clean empty diags up |
32 |
|
|
for ii=1:length(listDiags); |
33 |
|
|
eval(['tmp1=isempty(alldiag.' listDiags{ii} ');']); |
34 |
|
|
if tmp1; alldiag=rmfield(alldiag,listDiags{ii}); end; |
35 |
|
|
end; |
36 |
|
|
%complement alldiag |
37 |
|
|
listDiags=fieldnames(alldiag); |
38 |
|
|
alldiag.listSteps=listSteps; |
39 |
|
|
alldiag.listTimes=listTimes; |
40 |
|
|
alldiag.listDiags=listDiags; |
41 |
|
|
|