Zcorr.m
Jump to navigation
Jump to search
function zcorr(scale,offset) %created by Erik Stassinos 3/3/10 %function to apply depth correction with slope and offset info from matlab %program createdepth Dirname = pwd; pattern = fullfile(Dirname,'*.lcd'); %gets only lcd extensions directory = dir(pattern); clear i %make sure only the ayymmdd.lcd files are counted isz =0; for i=1:size(directory) name = directory(i).name; %isz= strncmp(name,'z',1) % if isz ==1 % sprintf('There seem to be z corrected files already here; they will be ignored') % % break % end list_lcd(i,:) = name end if isz ~=1 clear list_lcd end for p = 1:size(directory); if isz ~=1 directory(p).name list_lcd(p,:) = directory(p).name end end for j = 1:size(list_lcd) nlcd = strrep(list_lcd(j,:),'.lcd','.lcd'); %decided to create another file beacuse I have yet to figure out how to open original nlcd = strcat('z',nlcd); %lcd file for writing without leaving old stuff on the end or %completely erasing the lcd info so it cannot be modified uppon open id = fopen(nlcd,'w+') ;%new lcd file fid = fopen(list_lcd(j,:),'r'); %old lcd file to be erased T=1; for u = 1:500 %arbitrary amount just to go over the <data> position r = ftell(fid); line = fgets(fid); r3 = ftell(fid) ; if strncmp(line,'1depth',6) ==1 fseek(fid,r,-1); d = textscan(fid,'%s %n %n %n',1); d{1}; d{2}; dep = char(d{1}); fprintf(id,'%s %d %5.5f %5.5f %d %d\n',dep,d{2},scale,offset,d{3},d{4});%)'%5.5f %n %n %n',d{:,1:4}) %fprintf(id,'%5.5f %5.5f\n',offset,scale) r2 = ftell(id); T = 30000000; %if T matches a line number it will skip the line that number matches fseek(fid,r3,-1); end %so it doesn't write the same line twice for 1depth condition if T ~=30000000 fwrite(id,line); end T = T+1 ; if strncmp(line,'<data>',5) == 1; break end end fseek(fid,r,-1); s = strrep(list_lcd(j,:),'.lcd','.datmatrix'); m = load(s); a = (m(:,22)); a(1,1); format long e anew = (a - offset)/(scale); anew(1,1); %test break for first time m(:,22) = (anew); nm = strrep(list_lcd(j,:),'.lcd','.zcal'); dlmwrite(nm,m,'delimiter',' ','precision',6); mid = fopen(nm); frewind(mid); for o = 1:length(m); %writes new matrix lines to file mline = fgets(mid); fprintf(id,mline); end fprintf(id,'%s\n','<filters_used>'); fprintf(id,'%s %5.5f %5.5f','recal',scale, offset); newac9list(j,:) = nlcd; end fclose(fid); fclose(id); dlmwrite('list_ac9',newac9list,''); sprintf('done with recal')