function writelwn(outFilename, eu, crd, cfl, Lw, Es, Lu, lambda, lat, lon) % Brian Schlining % 01 Feb 2000 fid = fopen(outFilename, 'wt'); % Open the output file for writing if fid < 1 error(['Unable to open file ' outFilename]); end if nargin < 10 lat = []; lon = []; while isempty(lat) fprintf(1, '\n************************************************\n'); fprintf(1, 'Enter latitude of cast in decimal degrees (+N/-S).\n'); latS = input('Enter NaN if the latitude is unknown: ', 's'); lat = str2num(latS); end if isnan(lat) latS = '-999'; lon = NaN; end while isempty(lon) fprintf(1, '\n************************************************\n'); fprintf(1, 'Enter longitude of cast in decimal degrees (+E/-W).\n'); lonS = input('Enter NaN if the longitude is unknown: ', 's'); lon = str2num(lonS); end if isnan(lon) lonS = '-999'; end fprintf(1, '************************************************\n\n'); end %========================== % Begin writing the header %========================== fprintf(fid, '/begin_header\n'); fprintf(fid, '/affiliations=Monterey_Bay_Aquarium_Research_Institute\n'); fprintf(fid, '/investigators=%s\n', crd.operatorName); fprintf(fid, '/experiment=%s\n', crd.cruiseId); fprintf(fid, '/cruise=%s\n', crd.cruiseId); fprintf(fid, '/contact=%s\n', 'www.mbari.org'); fprintf(fid, '/paramters=Lu,Ed,Lw,Kd\n'); [p outfile ext] = fileparts(outFilename); fprintf(fid, '/data_file_name=%s\n', [outfile ext]); [p filename ext] = fileparts(crd.src); fprintf(fid, '/original_file_name=%s.bin\n', filename); fprintf(fid, '/data_type=profile\n'); fprintf(fid, '/documents= N/A\n'); fprintf(fid, '/west_longitude=%s[DEG]\n', lonS); fprintf(fid, '/east_longitude=%s[DEG]\n', lonS); fprintf(fid, '/north_latitude=%s[DEG]\n', latS); fprintf(fid, '/south_latitude=%s[DEG]\n', latS); fprintf(fid, '/delimiter=space\n'); [yearMin monthMin dayMin hourMin minuteMin secondMin] = datevec(crd.firstTime); secondMin = round(secondMin); [yearMax monthMax dayMax hourMax minuteMax secondMax] = datevec(crd.endTime); secondMax = round(secondMax); fprintf(fid, '/start_date=%04i%02i%02i\n', yearMin, monthMin, dayMin); fprintf(fid, '/end_date=%04i%02i%02i\n', yearMax, monthMax, dayMax); fprintf(fid, '/start_time=%02i:%02i:%02i[GMT]\n', hourMin, minuteMin, secondMin); fprintf(fid, '/end_time=%02i:%02i:%02i[GMT]\n', hourMax, minuteMax, secondMax); fprintf(fid, '/calibration_files=%s%s,%s\n', filename, ext, cfl.src); fprintf(fid, '/station=%s\n', crd.location); fprintf(fid, '/missing=-999\n'); fprintf(fid, '! Comments: Lw is calculated by fitting the equation, y = c(1)*exp(-a(1)*z) + c(2)*exp(-a(2)*z) + c(3), to the Lu data.\n'); fprintf(fid, '! Comments: Rrs is calculated as Lw/Es\n'); fprintf(fid, '! Comments: Location: %s\n', crd.location); fprintf(fid,'/fields=wavelength,Ed(0-),Es,Lu(0-),Lw,Lwn,Rrs\n'); fprintf(fid,'/units=nm,uW/cm^2/nm,uW/cm^2/nm,uW/cm^2/nm/sr,uW/cm^2/nm/sr,uW/cm^2/nm/sr,1/sr\n'); fprintf(fid,'/end_header@\n'); channels = strvcat(cfl.info.description); bad = strmatch( 'PAR', channels(Es,:)); Es(find(Es == max(bad))) = []; EsLambda = []; for i = 1:length(Es) EsLambda = [EsLambda str2num(channels(Es(i),3:end))']; end LuLambda = str2num(channels(Lu,3:end))'; uLambda = unique([EsLambda LuLambda]); Es0 = nanmean(eu(:,Es)); Lu0_ = Lw./0.544; if ~strcmp(latS, '-999') | ~strcmp(lonS, '-999') pctTrans = 1 - fresnel_(solarzenith(crd.firstTime, lat, lon)); Fn = calc_fn(crd.firstTime, lat, lon, LuLambda); Es0_ = Es0.*pctTrans; Lwn = Lw./Fn; else Es0_ = ones(size(Es0))*-999; Lwn = ones(size(Lw))*-999; end for i = 1:length(uLambda) goodEs = find(EsLambda == uLambda(i)); goodLu = find(LuLambda == uLambda(i)); if ~isempty(goodEs) ES0 = Es0(goodEs); ES0_ = Es0_(goodEs); else ES0 = -999; ES0_ = -999; end if ~isempty(goodLu) LW = Lw(goodLu); LU0_ = Lu0_(goodLu); LWN = Lwn(goodLu); else LW = -999; LU0_ = -999; LWN = -999; end if ~isempty(goodLu) & ~isempty(goodEs) Rrs = LW/ES0; else Rrs = -999; end fprintf(fid, '%12.6f ', uLambda(i)); fprintf(fid, '%12.6f %12.6f %12.6f %12.6f %12.6f %12.6f\n', ES0_, ES0, LU0_, LW, LWN, Rrs); end fclose(fid);