function cl31 = cat_acas_cl31(indir) % cat_acas_cl31 - concatenate all the CL31 data % % cl31 = cat_acas_cl31(indir) % % INPUT % indir - directory to read CL31 *.mat files from % % OUTPUT % cl31 - structure with fields as shown in read_cl31.m % % JZP March 2018 files = dir([indir,'/*cl31.mat']); % concatenate all the ndata into long time series pp = 1; LL = 0; for n = 1:length(files) pp = pp+LL; CL = load([indir,'/',files(n).name]); % disp(['catenating ',num2str(n),' of ',num2str(length(files)),' : ',... % files(n).name]); if n == 1 % setup empty data structures, f = 30 sec, slightly overlong cl31.mday = ones([length(files)*150, 1])*NaN; cl31.doy = ones([length(files)*150, 1])*NaN; cl31.cloudcode = ones([length(files)*150, 1])*NaN; cl31.base_ht = ones([length(files)*150, 3])*NaN; cl31.vert_vis = ones([length(files)*150, 1])*NaN; cl31.high_sig = ones([length(files)*150, 1])*NaN; cl31.sc_frac = ones([length(files)*150, 5])*NaN; cl31.sc_ht = ones([length(files)*150, 5])*NaN; cl31.bs_prof = ones([length(files)*150, 770])*NaN; cl31.ceil_range = CL.cl31.ceil_range; fields = fieldnames(cl31); end LL = length(CL.cl31.mday); for nn = 1:length(fields) -1 cl31.(fields{nn})(pp:pp+LL-1,:) = CL.cl31.(fields{nn}); end end % clean up any bad timestamps ii = isnan(cl31.mday); for n = 1:length(fields)-1 cl31.(fields{n}) = cl31.(fields{n})(~ii,:); end % Ensure unique time stamps [~,ii] = unique(cl31.mday); for n = 1:length(fields)-1 cl31.(fields{n}) = cl31.(fields{n})(ii,:); end