%% Versuchsplanung 2022 - VL6 - Regression 
% Author: Andreas Voigt
% Letzte Änderung:  26.09.2022 - Start des Programms
%% Aufräumen
clear all;close all;clc;
%% Einladen Experimentaldaten aus Excel
opts = detectImportOptions('KinetikDaten.xlsx');
preview('KinetikDaten.xlsx',opts);
opts.Sheet = 'fast2';
opts.SelectedVariableNames = [2 3 4 5 6 7 8 9 10]; 
opts.DataRange = '47:287';
opts.VariableNamingRule = 'preserve';
[t,E1,E2,E3,E4,E5,E6,E7,E8] = readvars('KinetikDaten.xlsx',opts);
%% Grafik
figure(11)
%plot(t,E1,'ro-',t,E2,'rx-',t,E3,'rs-',t,E4,'rp-')
%hold on
plot(t,E5,'go-',t,E6,'gx-',t,E7,'gs-',t,E8,'gp-')
xlabel(' Zeit t in [s] ');%xlim([0 500])
ylabel(' Signal bei 492nm in [a.u.] ');%ylim([0 0.2])
%% Regressionsparameter bestimmen
isize=size(t,1)-100; % Ende festgelegt
ExDa = E4; % Datensatz auswählen
xm=0; % Mittelwert X
ym=0; % Mittelwert Y
for i=1:isize
    xm=xm+t(i); % summe aller x werte
    ym=ym+ExDa(i); % summe aller y werte
end
xm=xm/isize;
ym=ym/isize;
% Summen Qxx und Qxy bilden
Qxx=0;
Qxy=0;
for i=1:isize
    Qxx=Qxx+(t(i)-xm).^2; 
    Qxy=Qxy+(t(i)-xm).*(ExDa(i)-ym);
end
% Regressionsfaktoren berechnen
b1=Qxy/Qxx;
b0=ym-(b1*xm);
% Regressionswerte berechnen yr
for i=1:isize
    tr(i) = t(i); %#ok<SAGROW> 
    yr(i)=b1*t(i)+b0; %#ok<SAGROW> 
end
%% Grafik 
figure(1)
plot(t,ExDa,'gs-','Linewidth',2)
hold on
plot(tr,yr,'bo-','Linewidth',2)
grid on
legend(' Experiment ',' Regression ')
xlabel(' Zeit t in [s] ');%xlim([0 500])
ylabel(' Signal bei 492nm in [a.u.] ');%ylim([0 0.2])
%% Regression - Bestimmheit und Korrelation
Qges=0;
Qregg=0;
Qrest=0;
for i=1:isize
     Qges=Qges+(ExDa(i)-ym).^2;
     Qregg=Qregg+(yr(1,i)-ym).^2;
     Qrest=Qrest+(ExDa(i)-yr(1,i)).^2;
end
text(500,0.0435,[' Bestimmtheit B= ',num2str(Qregg/Qges,'%8.6f')])
text(500,0.0440,[' Korrelation r= ',num2str(sqrt(Qregg/Qges)*sign(b1),'%8.6f')])
% Ende der Funktion
