config1 = mk_config1(instclass, a); config1(ii.hd_offset) = p.h_align; access = mk_access(instclass, a); % Doesn't change. ancil1 = mk_ancil1(instclass, r, 1); ancil2 = mk_ancil2(instclass, r, 1); bt = mk_bt(instclass, r, 1); %----------------------------------------------------------------------------- function c1 = mk_config1(instclass, a) %% c1 is a shipboard ADCP configuration_1 structure represented %% as a double array. %% a is a structure from read_os. c1 = 1e38 * ones(23, 1); ii = config1_ind; c1(ii.num_bins) = a.config.ncells; c1(ii.bin_length) = a.config.cell; c1(ii.pls_length) = a.config.pulse; c1(ii.blank_length) = a.config.blank; c1(ii.tr_depth) = a.config.tr_depth; c1(ii.freq_transmit) = a.config.sysconfig.frequency * 1000; %----------------------------------------------------------------------------- function c1 = mk_access(instclass, a) %% c1 is a shipboard ADCP access_variables structure represented %% as a double array. It needs to be only one-dimensional because %% its initial value is the same for all profiles in a file. %% a is a structure from read_os. c1 = 1e38 * ones(8, 1); ii = access_ind; c1(ii.first_good_bin) = 1; c1(ii.last_good_bin) = a.config.ncells; %----------------------------------------------------------------------------- function a1 = mk_ancil1(instclass, a, avg_flag) % function a1 = mk_ancil1(instclass, a, avg_flag) %% c1 is a shipboard ADCP ancil_1 structure represented %% as a double array. %% a is a structure from read_os. %% avg_flag is an optional argument; if true, a single %% time-averaged structure will be returned. if nargin == 1, avg_flag = 0; end NP = length(a.dday); ii = ancil1_ind; c1 = NaN * ones(10, NP); c1(ii.tr_temp, :) = a.temperature.'; c1(ii.snd_spd_used, :) = a.soundspeed.'; c1(ii.mn_heading, :) = a.heading.'; c1(ii.pgs_sample, :) = a.num_pings.'; if avg_flag, a1 = NaN * ones(10, 1); iii = [ii.tr_temp, ii.snd_spd_used, ii.mn_heading]; a1(iii) = mean(c1(iii, :), 2); hc = exp(i * a.heading * pi/180); a1(ii.mn_heading) = (180/pi) * angle(mean(hc)); a1(ii.pgs_sample) = sum(c1(ii.pgs_sample, :)); else a1 = c1; end a1(isnan(a1)) = 1e38; %----------------------------------------------------------------------------- function a2 = mk_ancil2(instclass, a, avg_flag) %% a2 is a shipboard ADCP ancil_2 structure represented %% as a double array. %% a is a structure from read_os. if nargin == 1, avg_flag = 0; end NP = length(a.heading); aa2 = NaN * ones(23, NP); ii = ancil2_ind; aa2(ii.mn_pitch,:) = a.pitch.'; aa2(ii.mn_roll,:) = a.roll.'; aa2(ii.last_good_bin,:) = a.config.ncells; if avg_flag, a2 = NaN * zeros(23, 1); iii = [ii.mn_pitch, ii.mn_roll]; a2(iii) = mean(aa2(iii, :), 2); a2(ii.last_good_bin) = a.config.ncells; else a2 = aa2; end a2(isnan(a2)) = 1e38; %----------------------------------------------------------------------------- function b = mk_bt(instclass, a, avg_flag) if nargin == 1, avg_flag = 0; end bb = [a.bt.vel(1:2, :); mean(a.bt.range)]; if avg_flag, b = mstdgap(bb, 2); else b = bb; end b(isnan(b)) = 1e38;