Skip to content

Instantly share code, notes, and snippets.

@hilburn
Created July 8, 2015 11:36
Show Gist options
  • Save hilburn/97139b25ea73c25806a6 to your computer and use it in GitHub Desktop.
Save hilburn/97139b25ea73c25806a6 to your computer and use it in GitHub Desktop.
function toExcel = cal_run_analyzer(filename, col_pressure, col_value, run_start)
[time, data, pressure] = load_data(filename, col_pressure, col_value);
if (isdatetime(time))
time = datenum(time);
end
run_length=400;
result=[];
run=1;
while run_start+run_length < length(data)
if data(run_start) < 50 && data(run_start+10)>50 && data(run_start+50) > 100 && data(run_start+50)<200 && data(run_start+200)>300
result(:,run,:)=[time(run_start:run_start+run_length)-693960 data(run_start:run_start+run_length) pressure(run_start:run_start+run_length)];
run_start=run_start+run_length;
run=run+1;
end
run_start=run_start+1;
end
if length(result) > 0
output(:,:)=result(:,:,2)./(1+result(:,:,3)/3000);
figure(1)
plot(time, data, 'LineSmoothing', 'on'); xlabel('DateTime'); ylabel('Sensor Output /V');
figure(2)
plot(output, 'LineSmoothing', 'on'); xlabel('Time /s'); ylabel('Sensor Output /V');
ppm_50=mean(output(80:100,:));
ppm_200=mean(output(190:210,:));
diluted=mean(output(320:340,:));
ppm_ratios=ppm_200./ppm_50;
dilution_ratios=diluted./ppm_200;
cal_m=(ppm_200-ppm_50)/150;
cal_c=ppm_50-cal_m*50;
cal_diluted=(diluted-cal_c)./cal_m;
toExcel=[ppm_50; ppm_200; diluted; cal_diluted];
end
end
function [Time, data, pressure] = load_data(filename, col_pressure, col_value)
[num, char, ~] = xlsread(filename);
Time=char(2:length(char),1);
Time=datetime(Time, 'InputFormat', 'dd/MM/uuuu HH:mm:ss');
pressure=num(:,col_pressure-1);
data=num(:,col_value-1);
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment