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