Conv2lcd HS6.m
Revision as of 15:31, 2 August 2010 by 128.111.101.185 (talk)
function conv2lcd_HS6(pb) %conv2lcd_HS6 %This is the first part of the Hydroscat processing once it passes through %Hydrosoft. %This function reads in the .dat file and splits off the data into a %sepparate file where is takes the cammas out. %Section titles are inserted into the header section(<cruise_info>....) as %well as instrument serial number at the top of the file %the column titles are converted to rows and the "channels" section is %removed. %start it from directory that sees dat directory %this is run in the dat directory direct = pwd; cd('dat'); unix('cp *.dat ../'); %gets dat files and moves them out to processing dir cd .. datprofile = fullfile(pwd,'*.dat') datfiledir = dir(datprofile); [s,x] = size(datfiledir); %===========call make_meta_hs6(pb) make_meta_hs6(pb) %makes the meta file %===========end call meta = fopen('metafile.txt','r'); title_ln = fgets(meta); for i = 1:s info = textscan(meta,'%*s %*s %s %s %s %s',1); %%%%%%%%%%stuff to open and/or create%%%%%%% fid = fopen(datfiledir(i).name,'r'); % %fid = fopen('h100428a.dat') name = datfiledir(i).name %name = 'h100428a.dat'; %fidtemp = fopen(strcat(num2str(i),'temphs6_lcd'),'w+'); lcdname = strrep(name,'.dat','.lcd'); fidlcd = fopen(strrep(name,'.dat','.lcd'),'w+'); datmatrix = strrep(name,'.dat','.datmat'); mat = fopen(datmatrix,'w+'); %%%%%%%%%%%end stuff%%%%%%%%%%%%%%%%%%%%%% %---------get parameters-------- %#######loop to get params date = info{1}; station = info{2}; lat = char(info{3}); lon = char(info{4}); linecount =1; line =0; while strncmp(line,'[Channels]',10) ~= 1 line = fgets(fid); if strncmp(line,'[Channels]',10) ==1 break end if linecount ==1 fprintf(fidlcd,'%s\n','<cruise_info>'); %insert cruise_ID >pb# fprintf(fidlcd,'%s %s\n','Cruise_ID ',pb); %serial number %insert date >080211 fprintf(fidlcd,'%s %s\n','Date ',date{1}); %insert station > PnB# fprintf(fidlcd,'%s %s\n','Station ',station{1}); %insert latitude > 34.??? fprintf(fidlcd,'%s %s\n','Latitude ',lat); %insert longitude > 119.???? fprintf(fidlcd,'%s %s\n','Longitude ',lon); %insert metadata_name > metafile.txt fprintf(fidlcd,'%s %s\n','metadata_filename', 'metafile.txt'); %insert '<sampled_parameters>') end if strncmp(line,'[Header]',8) ==1 linecount = linecount +1; continue end if strncmp(line,'FileType',8) == 1 continue end if strncmp(line,'CreationDate',12) == 1 continue end fprintf(fidlcd,'%s',line); linecount = linecount +1; end pline =1; params =1; %++++++ write data params in column fprintf(fidlcd,'%s\n', '<sampled_parameters>'); fprintf(fidlcd,'%s\n','hydro_time'); fprintf(fidlcd,'%s\n','depth'); %=====get rest of data params while strncmp(params,'Time',4) ~= 1 params = fgets(fid) end ind = findstr(params,',') for p = 2:length(ind) -1 headr = params(ind(p)+1:ind(p+1) -1) % headr(p,:) = params(1:ind(p,:) -1) fprintf(fidlcd,'%s\n',headr) end lengin = length(ind); lastin = ind(lengin); lengpar = length(params) header_plus1 = params(lastin+1:lengpar)%assumes the last two parameters are same character length fprintf(fidlcd,'%s',header_plus1) %====end get data params %++++++end write data params % % % while strncmp(params,'[ColumnHeadings]',16) ~= 1 % % % params = fgets(fid); % % % params = strrep(params,'"',''); % % % if strncmp(params,'[ColumnHeadings]',16) == 1 % % % break % % % end % % % %eval([strcat('par',num2str(pline)) '= params']) % % % par(pline,:) = params; % % % % % % pline = pline +1; % % % end % % % %====== % % % %++++++ write data params in column % % % fprintf(fidlcd,'%s\n', '<sampled_parameters>'); % % % fprintf(fidlcd,'%s\n','hydro_time'); % % % fprintf(fidlcd,'%s\n','depth'); % % % for t = 1:pline -1 % % % parline = strcat(par(t,:),'_corr'); % % % fprintf(fidlcd,'%s\n', parline); % % % end % % % clear t; % % % for t = 1:pline -1 % % % %parline2 = strcat('par(,num2str(t)) % % % par1 = par(t,:); % % % fprintf(fidlcd,'%s', par1); % % % end % % % fprintf(fidlcd,'%s\n','<derived_parameters>'); fprintf(fidlcd,'%s\n','<data>'); % % % tline = 0; %++++++ end write data params in column while strncmp(tline,'[Data]',6) ~= 1 tline = fgets(fid); end %------- does correct and traditional formatting for data while ~feof(fid) data = fgets(fid); %data = strrep(data,',',' '); data = strrep(data,',.',',0.'); data = strrep(data,'E','e'); %--------converts time to seconds from julean days after 1970 k = strfind(data,','); time = str2num(data(1:k(1)-1)); time = 86400*(time-25569); data(1:k(1)-1)=[]; data = [num2str(time),data]; data = strrep(data,',',' '); fprintf(fidlcd,data); fprintf(mat,data); end fprintf(fidlcd,'%s\n','<filters_used>'); %----to make list_hs6 newl(i,:) = lcdname; end dlmwrite('list_hs6',newl,''); fclose all; if pwd == direct unix('rm *.dat') else disp('change to pb dir and delete .dat files') end