Difference between revisions of "CPSdoKQ"
Jump to navigation
Jump to search
(Created page with "back to C-OPS/CERBERUS Mfiles") |
|||
Line 1: | Line 1: | ||
+ | <pre> | ||
+ | |||
+ | function CPSdoKQ(infile,type,channel,depth_int,trend,variation) | ||
+ | %(infile,type,channel,depth_int,trend,variation) | ||
+ | %This function qualifies the incident illumination of a spectral channel | ||
+ | %during sampling over a given depth interval and writes a flag on a new | ||
+ | %data line | ||
+ | %The user chooses the channel and window width(m). For each line the | ||
+ | %program calculates teh standard deviation and mean of the first difference | ||
+ | %(M1stdiff) for teh group of points in the interval z+- | ||
+ | %depth_window_width/2 | ||
+ | %A new line will be placed in <derived_parameters> KQ- | ||
+ | %cmd example -m 2ed488 10 0.05 0.02 infile outfile | ||
+ | %compare the M1stdiff/mean and sigm/mean of data in window +- 5m to 0.02 | ||
+ | %and 0.05 respectively for channel 2ed488 | ||
+ | %1-15-2014 needed to change sigma to sigm-matlab function conflict | ||
+ | |||
+ | |||
+ | %===SET PARAMETERS=== | ||
+ | |||
+ | infid = fopen(infile,'r'); | ||
+ | dataname = strcat('KQCmat',infile); | ||
+ | dataname = strrep(dataname,'.lcd',''); | ||
+ | |||
+ | %===MAKE DATA FILE FOR INPUT FILE=== | ||
+ | |||
+ | |||
+ | frewind(infid); | ||
+ | |||
+ | datafid = fopen(dataname,'w'); | ||
+ | while ~feof(infid) | ||
+ | testline = fgets(infid); | ||
+ | if strncmp(testline,'<data>',6) ==1 %start of data section | ||
+ | while strncmp(testline,'<filters_used>',14) ~=1 | ||
+ | testline = fgets(infid); | ||
+ | if strncmp(testline,'<filters_used>',14) ==1 | ||
+ | break | ||
+ | end | ||
+ | fprintf(datafid,testline); | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | fclose(datafid); | ||
+ | frewind(infid); | ||
+ | |||
+ | |||
+ | %===GET CASTID MATRIX FROM FILE AND SPLIT DATA=== | ||
+ | %fid = fopen(infile); | ||
+ | |||
+ | [in,mer,dep] = index1(infile); | ||
+ | |||
+ | mat = load(dataname); | ||
+ | |||
+ | clear ij | ||
+ | clear downcastmatrix | ||
+ | clear upcastmatrix | ||
+ | clear diffdn | ||
+ | clear diffup | ||
+ | width = length(mat(1,:)); | ||
+ | %for ij = in{1}:1:in{2}; | ||
+ | for ij = 1:1:in{2} | ||
+ | %downcastmatrix(ij-(in{1}-1),:) = mat(ij,1:width); %starts from 1 and goes to in2 | ||
+ | downcastmatrix(ij,:) = mat(ij,1:width); | ||
+ | end | ||
+ | % for r = in{3}:in{4}; | ||
+ | % upcastmatrix(r-(in{3}-1),:) = mat(r,1:width); | ||
+ | % end | ||
+ | %mat = mat(in{1}:end,:); %index mat appropriatedly to match downcastmatrix | ||
+ | %===FIND CHANNEL INDEX=== | ||
+ | |||
+ | lineind =0; | ||
+ | while ~feof(infid) | ||
+ | line = fgets(infid); | ||
+ | if strncmp(line,'<sampled_parameters>',20) ==1 | ||
+ | while strncmp(line,'<data>',6) ~= 1 | ||
+ | lineind = lineind +1; | ||
+ | line = fgets(infid); | ||
+ | if strncmp(line,'<derived_parameters>',20) == 1 | ||
+ | lineind = lineind -1; | ||
+ | end | ||
+ | if strncmp(channel,line,5) ==1 | ||
+ | chanind = lineind; | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | |||
+ | |||
+ | %===INDEX OF DEPTH ONLY=== | ||
+ | |||
+ | lineind =0; | ||
+ | frewind(infid) | ||
+ | while ~feof(infid) | ||
+ | line = fgets(infid); | ||
+ | if strncmp(line,'<sampled_parameters>',20) ==1 | ||
+ | while strncmp(line,'<data>',6) ~= 1 | ||
+ | lineind = lineind +1; | ||
+ | line = fgets(infid); | ||
+ | if strncmp(line,'<derived_parameters>',20) == 1 | ||
+ | lineind = lineind -1; | ||
+ | end | ||
+ | if strncmp('LuZDepth',line,8) ==1 %changed 12-3-12 | ||
+ | depthind = lineind; | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | depthind; | ||
+ | %===INDEX OF TIME ONLY=== | ||
+ | |||
+ | lineind =0; | ||
+ | frewind(infid); | ||
+ | while ~feof(infid) | ||
+ | line = fgets(infid); | ||
+ | if strncmp(line,'<sampled_parameters>',20) ==1 | ||
+ | while strncmp(line,'<data>',6) ~= 1 | ||
+ | lineind = lineind +1; | ||
+ | line = fgets(infid); | ||
+ | if strncmp(line,'<derived_parameters>',20) == 1 | ||
+ | lineind = lineind -1; | ||
+ | end | ||
+ | if strncmp('FrameCount',line,10) ==1 %changed 12-3-12 0prr_record | ||
+ | %if strncmp('1mer_time',line,9) ==1 %changed 12-3-12 0prr_record | ||
+ | timeind = lineind; | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | timeind; | ||
+ | dbstop if error | ||
+ | |||
+ | |||
+ | data = downcastmatrix(:,chanind); %specific channel data | ||
+ | time = downcastmatrix(:,timeind); | ||
+ | depth = downcastmatrix(:,depthind); | ||
+ | |||
+ | %===NEED TO SORT DATA TO BE MONOTONIC AND THEN RETURN WHEN OPERATION DONE== | ||
+ | |||
+ | % unsorted_ind = 1:length(downcastmatrix);%index to sort back to | ||
+ | % [depth_sorted,ds_ind] = sort(depth);%sorting just the depth and getting index | ||
+ | % sorted_DCmatrix = downcastmatrix(ds_ind,:);%sorting all according index of sorted depth | ||
+ | % new_unsort_ind(ds_ind) = unsorted_ind; %values at sorted index = unsorted index | ||
+ | % %new_unsorted = sorted_DCmatrix(new_unsort_ind,:);%should be same as original downcast matrix | ||
+ | % | ||
+ | % %===Stuff is now sorted=== but currently not used | ||
+ | % | ||
+ | % timesort = time(ds_ind,:); | ||
+ | % datasort = data(ds_ind,:); | ||
+ | % depthsort = depth_sorted; | ||
+ | % downcastmatrixsort = sorted_DCmatrix; | ||
+ | |||
+ | %===SORT WHOLE MATRIX JUST IN CASE=== not going to work with both up and | ||
+ | %downcast | ||
+ | |||
+ | %wholeunsort_ind = 1:length(mat); | ||
+ | %[depth_whole_sort,dsw_ind] = sort(mat(:,depthind)); | ||
+ | %sorted_wholemat = mat(dsw_ind,:); | ||
+ | %new_unsortind(dsw_ind) = wholeunsort_ind; | ||
+ | |||
+ | |||
+ | |||
+ | %=====LOAD DATA AND DO===== | ||
+ | %================================================================ | ||
+ | %DoKQ | ||
+ | %Condition Flag | ||
+ | %contains trapflag 14 | ||
+ | %outside of cast index 13 | ||
+ | %calculated M1stdiff > max M1stdiff and sig > sigmx 12 | ||
+ | %calculated M1stdiff > max M1stdiff 11 | ||
+ | %calculated sig > sigmx 10 | ||
+ | %point is less than winmin 1 | ||
+ | %good data 0 | ||
+ | %================================================================ | ||
+ | window = depth_int/2; | ||
+ | %bflag = {'notfound'}; | ||
+ | %aflag = {'notfound'}; | ||
+ | bflag =5; %==notfound | ||
+ | aflag =5; %==notfound | ||
+ | %for row =1:in{2} +1 %initialize result and sigm | ||
+ | % sigm(row,:) =5; | ||
+ | % result(row,:) =-5; | ||
+ | %end | ||
+ | r = 1;%in{1}; %originally r = {in} because it was working with entire depth matrix not pre-timmed to castID such as here | ||
+ | %index =1; | ||
+ | while r <= in{2} | ||
+ | |||
+ | if data(r)== -9.9e35 || depth(r) == -9.9e35 | ||
+ | result(r) = -5; | ||
+ | sigm(r) = -9.9E35; | ||
+ | r =r+1; | ||
+ | continue | ||
+ | end | ||
+ | %lower window(shallow) | ||
+ | |||
+ | bcondition = depth(r) - window; | ||
+ | |||
+ | for pt =r:-1:1%count down from top index to first point of data %(length(downcastmatrixsort(:,depthind)-1)) | ||
+ | delta = depth(pt);%downcastmatrix(pt,depthind); | ||
+ | |||
+ | if delta <= bcondition | ||
+ | disp('===========================') | ||
+ | disp('found a winmin') | ||
+ | winmin = pt; | ||
+ | bflag =1; %found | ||
+ | delta_b = delta; | ||
+ | bcondition; | ||
+ | |||
+ | break | ||
+ | else | ||
+ | |||
+ | %disp('continueing') | ||
+ | continue | ||
+ | end | ||
+ | end | ||
+ | if bflag ==5; | ||
+ | %result(r)=-9.9E35; | ||
+ | result(r) =5;%NOTFOUND | ||
+ | r = r+1; | ||
+ | |||
+ | continue | ||
+ | end | ||
+ | |||
+ | %upper window(deeper) | ||
+ | acondition = depth(r) + window; | ||
+ | for pt = r:in{2}%length(downcastmatrixsort) %goes down in depth to find other window point | ||
+ | |||
+ | delta = mat(pt,depthind); %beacuse downcastmatrix is offset by index | ||
+ | %if acondition > mat(in{2}-in{1},depthind) | ||
+ | if acondition > mat(in{2}-1,depthind) | ||
+ | r = r+1; | ||
+ | result(r) = 5; | ||
+ | continue | ||
+ | disp('overbounds') | ||
+ | end | ||
+ | |||
+ | if delta >= acondition | ||
+ | disp('found a winmax') | ||
+ | winplus = pt | ||
+ | aflag = 1; | ||
+ | acondition; | ||
+ | delta_a = delta; | ||
+ | disp('==========================') | ||
+ | break | ||
+ | else | ||
+ | continue | ||
+ | end | ||
+ | end | ||
+ | if aflag==5 | ||
+ | %result(r)=-9.9E35; | ||
+ | disp('aflag 5') | ||
+ | result(r)=5; %NOTFOUND | ||
+ | r = r+1; | ||
+ | continue | ||
+ | end | ||
+ | |||
+ | |||
+ | %================got to here there was an "end" for the while < loop | ||
+ | format long | ||
+ | %===DO M1SDIFF AND SIGM=== | ||
+ | nint = winplus - winmin +1; | ||
+ | fsum =0; | ||
+ | tsum =0; | ||
+ | qout =0; | ||
+ | S =0; | ||
+ | z = winmin; | ||
+ | while z<winplus | ||
+ | fsum = fsum + data(z+1) - data(z); | ||
+ | tsum = tsum + time(z+1) - time(z); | ||
+ | qout = qout + abs(fsum/tsum); | ||
+ | z = z +1; | ||
+ | end | ||
+ | |||
+ | for z = winmin:winplus | ||
+ | ex = data(z); | ||
+ | S = [S,ex]; | ||
+ | if z == winmin | ||
+ | S(1) = ex; | ||
+ | end | ||
+ | end | ||
+ | |||
+ | sigm(r) = std(S)./mean(S); | ||
+ | result(r) = ((1/nint)*qout)/mean(S); | ||
+ | |||
+ | r = r+1; | ||
+ | end | ||
+ | |||
+ | |||
+ | %sigm_unsort = sigm(new_unsort_ind); | ||
+ | %result_unsort = result(new_unsort_ind); | ||
+ | %===fill in column with appropriate flag=== | ||
+ | |||
+ | %appline = zeros(size(result)); | ||
+ | result_prev = result; | ||
+ | for i = 1:in{2}%1:length(result_unsort) | ||
+ | |||
+ | if result(i) > trend && sigm(i) > variation && result(i) ~= 5.00 | ||
+ | appline(i) = 12; | ||
+ | elseif result(i) > trend && result(i) ~= 5.00 | ||
+ | appline(i) = 11; | ||
+ | elseif sigm(i) > variation %&& result(i) ~= 5.00 | ||
+ | % if i == 56 | ||
+ | % sigm(i) | ||
+ | % variation | ||
+ | % keyboard | ||
+ | % end | ||
+ | appline(i) =10; | ||
+ | elseif result(i) < -9.0e35%or outside of downcast | ||
+ | %keyboard | ||
+ | appline(i) =13; | ||
+ | elseif result(i) == 5 %&& result(i) ~= 5.00 | ||
+ | appline(i) =1; | ||
+ | elseif result(i) == -5 %&& result(i) ~= 1.00 | ||
+ | appline(i) =14; | ||
+ | else | ||
+ | % if result(i) == 1.00 | ||
+ | % appline(i) = result(i); | ||
+ | % else | ||
+ | appline(i) =0; | ||
+ | % end | ||
+ | end | ||
+ | |||
+ | end | ||
+ | |||
+ | |||
+ | %outside of downcast bounds.. just flag | ||
+ | for it = in{2}+1:length(mat) | ||
+ | appline(it) = 13; | ||
+ | end | ||
+ | |||
+ | %===MAKE DATA FILE=== | ||
+ | |||
+ | QCdata = load(dataname); | ||
+ | y = size(QCdata,1); | ||
+ | x = size(QCdata,2); | ||
+ | QCdata_new = zeros(y,x+1); | ||
+ | QCdata_new(1:y,1:x) = QCdata; | ||
+ | QCdata_new(:,end) = appline'; | ||
+ | |||
+ | %===INSERT NEW DATA INTO NEW LCD=== | ||
+ | |||
+ | frewind(infid); | ||
+ | qclcd = fopen(strcat('K',infile),'w+'); | ||
+ | while ~feof(infid) | ||
+ | pos = fgets(infid); | ||
+ | if strncmp(pos,'<data>',6) ==1 %start of data section | ||
+ | break | ||
+ | end | ||
+ | fprintf(qclcd,pos); | ||
+ | end | ||
+ | |||
+ | %===INSERT NEW DERIVED PARAMS AND DATA=== | ||
+ | newparam = strcat('kq-',channel); | ||
+ | fprintf(qclcd,'%s\n',newparam); | ||
+ | fprintf(qclcd,'%s\n','<data>'); | ||
+ | %===overwrite old matrix | ||
+ | dlmwrite(dataname,QCdata_new,'delimiter',' ','precision',6); %overwrite old matrix file | ||
+ | |||
+ | %orcmat = load('akrmP101216C_nhd.lcd'); %%%=============was testing here | ||
+ | %nwcmat = load('KQCmatrqcmmP101216C'); | ||
+ | %minus = orcmat(:,end-2) - nwcmat(:,end); | ||
+ | %nzro = find(minus ~= 0) | ||
+ | %keyboard | ||
+ | |||
+ | datafile = fopen(dataname); | ||
+ | while ~feof(datafile) | ||
+ | %for loop = 1:length(QCdata_new) | ||
+ | datln = fgets(datafile); | ||
+ | fprintf(qclcd,datln); | ||
+ | end | ||
+ | |||
+ | |||
+ | %===ADD TO FILTERS USED ON NEW LCD=== | ||
+ | |||
+ | while ~feof(infid) | ||
+ | lcdline = fgets(infid); | ||
+ | if strncmp(lcdline,'<filters_used>',14) ==1 | ||
+ | fprintf(qclcd,'%s\n','<filters_used>'); | ||
+ | while ~feof(infid) | ||
+ | filter = fgets(infid); | ||
+ | fprintf(qclcd,'%s',filter); | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | %domathstring =strcat(['domath',type,channel1,channel2,num2str(number),outfieldname]); | ||
+ | %fprintf(newlcdfile,'%s\n', domathstring); | ||
+ | fprintf(qclcd,'%s','') | ||
+ | fprintf(qclcd,'%s','doKQ '); | ||
+ | fprintf(qclcd,'%s',' '); | ||
+ | fprintf(qclcd,'%s',type); | ||
+ | fprintf(qclcd,'%s',' '); | ||
+ | fprintf(qclcd,'%s',channel); | ||
+ | fprintf(qclcd,'%s',' '); | ||
+ | fprintf(qclcd,'%s',num2str(depth_int)); | ||
+ | fprintf(qclcd,'%s',' '); | ||
+ | fprintf(qclcd,'%s',num2str(trend)); | ||
+ | fprintf(qclcd,'%s',' '); | ||
+ | fprintf(qclcd,'%s',num2str(variation)); | ||
+ | |||
+ | fclose('all'); | ||
+ | |||
+ | |||
+ | </pre> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
back to [[C-OPS/CERBERUS Mfiles]] | back to [[C-OPS/CERBERUS Mfiles]] |
Latest revision as of 15:37, 13 February 2014
function CPSdoKQ(infile,type,channel,depth_int,trend,variation) %(infile,type,channel,depth_int,trend,variation) %This function qualifies the incident illumination of a spectral channel %during sampling over a given depth interval and writes a flag on a new %data line %The user chooses the channel and window width(m). For each line the %program calculates teh standard deviation and mean of the first difference %(M1stdiff) for teh group of points in the interval z+- %depth_window_width/2 %A new line will be placed in <derived_parameters> KQ- %cmd example -m 2ed488 10 0.05 0.02 infile outfile %compare the M1stdiff/mean and sigm/mean of data in window +- 5m to 0.02 %and 0.05 respectively for channel 2ed488 %1-15-2014 needed to change sigma to sigm-matlab function conflict %===SET PARAMETERS=== infid = fopen(infile,'r'); dataname = strcat('KQCmat',infile); dataname = strrep(dataname,'.lcd',''); %===MAKE DATA FILE FOR INPUT FILE=== frewind(infid); datafid = fopen(dataname,'w'); while ~feof(infid) testline = fgets(infid); if strncmp(testline,'<data>',6) ==1 %start of data section while strncmp(testline,'<filters_used>',14) ~=1 testline = fgets(infid); if strncmp(testline,'<filters_used>',14) ==1 break end fprintf(datafid,testline); end end end fclose(datafid); frewind(infid); %===GET CASTID MATRIX FROM FILE AND SPLIT DATA=== %fid = fopen(infile); [in,mer,dep] = index1(infile); mat = load(dataname); clear ij clear downcastmatrix clear upcastmatrix clear diffdn clear diffup width = length(mat(1,:)); %for ij = in{1}:1:in{2}; for ij = 1:1:in{2} %downcastmatrix(ij-(in{1}-1),:) = mat(ij,1:width); %starts from 1 and goes to in2 downcastmatrix(ij,:) = mat(ij,1:width); end % for r = in{3}:in{4}; % upcastmatrix(r-(in{3}-1),:) = mat(r,1:width); % end %mat = mat(in{1}:end,:); %index mat appropriatedly to match downcastmatrix %===FIND CHANNEL INDEX=== lineind =0; while ~feof(infid) line = fgets(infid); if strncmp(line,'<sampled_parameters>',20) ==1 while strncmp(line,'<data>',6) ~= 1 lineind = lineind +1; line = fgets(infid); if strncmp(line,'<derived_parameters>',20) == 1 lineind = lineind -1; end if strncmp(channel,line,5) ==1 chanind = lineind; end end end end %===INDEX OF DEPTH ONLY=== lineind =0; frewind(infid) while ~feof(infid) line = fgets(infid); if strncmp(line,'<sampled_parameters>',20) ==1 while strncmp(line,'<data>',6) ~= 1 lineind = lineind +1; line = fgets(infid); if strncmp(line,'<derived_parameters>',20) == 1 lineind = lineind -1; end if strncmp('LuZDepth',line,8) ==1 %changed 12-3-12 depthind = lineind; end end end end depthind; %===INDEX OF TIME ONLY=== lineind =0; frewind(infid); while ~feof(infid) line = fgets(infid); if strncmp(line,'<sampled_parameters>',20) ==1 while strncmp(line,'<data>',6) ~= 1 lineind = lineind +1; line = fgets(infid); if strncmp(line,'<derived_parameters>',20) == 1 lineind = lineind -1; end if strncmp('FrameCount',line,10) ==1 %changed 12-3-12 0prr_record %if strncmp('1mer_time',line,9) ==1 %changed 12-3-12 0prr_record timeind = lineind; end end end end timeind; dbstop if error data = downcastmatrix(:,chanind); %specific channel data time = downcastmatrix(:,timeind); depth = downcastmatrix(:,depthind); %===NEED TO SORT DATA TO BE MONOTONIC AND THEN RETURN WHEN OPERATION DONE== % unsorted_ind = 1:length(downcastmatrix);%index to sort back to % [depth_sorted,ds_ind] = sort(depth);%sorting just the depth and getting index % sorted_DCmatrix = downcastmatrix(ds_ind,:);%sorting all according index of sorted depth % new_unsort_ind(ds_ind) = unsorted_ind; %values at sorted index = unsorted index % %new_unsorted = sorted_DCmatrix(new_unsort_ind,:);%should be same as original downcast matrix % % %===Stuff is now sorted=== but currently not used % % timesort = time(ds_ind,:); % datasort = data(ds_ind,:); % depthsort = depth_sorted; % downcastmatrixsort = sorted_DCmatrix; %===SORT WHOLE MATRIX JUST IN CASE=== not going to work with both up and %downcast %wholeunsort_ind = 1:length(mat); %[depth_whole_sort,dsw_ind] = sort(mat(:,depthind)); %sorted_wholemat = mat(dsw_ind,:); %new_unsortind(dsw_ind) = wholeunsort_ind; %=====LOAD DATA AND DO===== %================================================================ %DoKQ %Condition Flag %contains trapflag 14 %outside of cast index 13 %calculated M1stdiff > max M1stdiff and sig > sigmx 12 %calculated M1stdiff > max M1stdiff 11 %calculated sig > sigmx 10 %point is less than winmin 1 %good data 0 %================================================================ window = depth_int/2; %bflag = {'notfound'}; %aflag = {'notfound'}; bflag =5; %==notfound aflag =5; %==notfound %for row =1:in{2} +1 %initialize result and sigm % sigm(row,:) =5; % result(row,:) =-5; %end r = 1;%in{1}; %originally r = {in} because it was working with entire depth matrix not pre-timmed to castID such as here %index =1; while r <= in{2} if data(r)== -9.9e35 || depth(r) == -9.9e35 result(r) = -5; sigm(r) = -9.9E35; r =r+1; continue end %lower window(shallow) bcondition = depth(r) - window; for pt =r:-1:1%count down from top index to first point of data %(length(downcastmatrixsort(:,depthind)-1)) delta = depth(pt);%downcastmatrix(pt,depthind); if delta <= bcondition disp('===========================') disp('found a winmin') winmin = pt; bflag =1; %found delta_b = delta; bcondition; break else %disp('continueing') continue end end if bflag ==5; %result(r)=-9.9E35; result(r) =5;%NOTFOUND r = r+1; continue end %upper window(deeper) acondition = depth(r) + window; for pt = r:in{2}%length(downcastmatrixsort) %goes down in depth to find other window point delta = mat(pt,depthind); %beacuse downcastmatrix is offset by index %if acondition > mat(in{2}-in{1},depthind) if acondition > mat(in{2}-1,depthind) r = r+1; result(r) = 5; continue disp('overbounds') end if delta >= acondition disp('found a winmax') winplus = pt aflag = 1; acondition; delta_a = delta; disp('==========================') break else continue end end if aflag==5 %result(r)=-9.9E35; disp('aflag 5') result(r)=5; %NOTFOUND r = r+1; continue end %================got to here there was an "end" for the while < loop format long %===DO M1SDIFF AND SIGM=== nint = winplus - winmin +1; fsum =0; tsum =0; qout =0; S =0; z = winmin; while z<winplus fsum = fsum + data(z+1) - data(z); tsum = tsum + time(z+1) - time(z); qout = qout + abs(fsum/tsum); z = z +1; end for z = winmin:winplus ex = data(z); S = [S,ex]; if z == winmin S(1) = ex; end end sigm(r) = std(S)./mean(S); result(r) = ((1/nint)*qout)/mean(S); r = r+1; end %sigm_unsort = sigm(new_unsort_ind); %result_unsort = result(new_unsort_ind); %===fill in column with appropriate flag=== %appline = zeros(size(result)); result_prev = result; for i = 1:in{2}%1:length(result_unsort) if result(i) > trend && sigm(i) > variation && result(i) ~= 5.00 appline(i) = 12; elseif result(i) > trend && result(i) ~= 5.00 appline(i) = 11; elseif sigm(i) > variation %&& result(i) ~= 5.00 % if i == 56 % sigm(i) % variation % keyboard % end appline(i) =10; elseif result(i) < -9.0e35%or outside of downcast %keyboard appline(i) =13; elseif result(i) == 5 %&& result(i) ~= 5.00 appline(i) =1; elseif result(i) == -5 %&& result(i) ~= 1.00 appline(i) =14; else % if result(i) == 1.00 % appline(i) = result(i); % else appline(i) =0; % end end end %outside of downcast bounds.. just flag for it = in{2}+1:length(mat) appline(it) = 13; end %===MAKE DATA FILE=== QCdata = load(dataname); y = size(QCdata,1); x = size(QCdata,2); QCdata_new = zeros(y,x+1); QCdata_new(1:y,1:x) = QCdata; QCdata_new(:,end) = appline'; %===INSERT NEW DATA INTO NEW LCD=== frewind(infid); qclcd = fopen(strcat('K',infile),'w+'); while ~feof(infid) pos = fgets(infid); if strncmp(pos,'<data>',6) ==1 %start of data section break end fprintf(qclcd,pos); end %===INSERT NEW DERIVED PARAMS AND DATA=== newparam = strcat('kq-',channel); fprintf(qclcd,'%s\n',newparam); fprintf(qclcd,'%s\n','<data>'); %===overwrite old matrix dlmwrite(dataname,QCdata_new,'delimiter',' ','precision',6); %overwrite old matrix file %orcmat = load('akrmP101216C_nhd.lcd'); %%%=============was testing here %nwcmat = load('KQCmatrqcmmP101216C'); %minus = orcmat(:,end-2) - nwcmat(:,end); %nzro = find(minus ~= 0) %keyboard datafile = fopen(dataname); while ~feof(datafile) %for loop = 1:length(QCdata_new) datln = fgets(datafile); fprintf(qclcd,datln); end %===ADD TO FILTERS USED ON NEW LCD=== while ~feof(infid) lcdline = fgets(infid); if strncmp(lcdline,'<filters_used>',14) ==1 fprintf(qclcd,'%s\n','<filters_used>'); while ~feof(infid) filter = fgets(infid); fprintf(qclcd,'%s',filter); end end end %domathstring =strcat(['domath',type,channel1,channel2,num2str(number),outfieldname]); %fprintf(newlcdfile,'%s\n', domathstring); fprintf(qclcd,'%s','') fprintf(qclcd,'%s','doKQ '); fprintf(qclcd,'%s',' '); fprintf(qclcd,'%s',type); fprintf(qclcd,'%s',' '); fprintf(qclcd,'%s',channel); fprintf(qclcd,'%s',' '); fprintf(qclcd,'%s',num2str(depth_int)); fprintf(qclcd,'%s',' '); fprintf(qclcd,'%s',num2str(trend)); fprintf(qclcd,'%s',' '); fprintf(qclcd,'%s',num2str(variation)); fclose('all');
back to C-OPS/CERBERUS Mfiles