% si_thermoresist_ausgleich.m

% Nichtlineare (quadratische) Kennlinie eines
% Si-Widerstands-Temperatursensors

a=0.77e-2;
b=1.8e-5;
th=(0:5:120)';
rt = 2000*(1+a*(th-20)+b*(th-20).^2);

figure(1);
hl = plot(th,rt,'+');
set(hl,'linewidth',5)
grid

% Lineare Näherung durch Ausgleichsgerade (polyfit mit Polynom 1. Ordnung)
[p,S]=polyfit(th,rt,1)
rtlin = polyval(p,th);
figure(2)
clf
set(gcf,'units','normalized')
set(gcf,'position',[0.4 0.05,0.57,0.85])
h = plotpos(2,0.04);
axes(h(1))
hl2 = plot(th,rt,'+',th,rtlin);
set(hl2,'linewidth',1.5)
grid

% Näherung durch Ausgleichsparabel (polyfit mit Polynom 2. Ordnung)
[p,S]=polyfit(th,rt,2)
rtlin = polyval(p,th);
axes(h(2))
hl2 = plot(th,rt,'+',th,rtlin);
set(hl2,'linewidth',1.5)
grid

% Lineare Näherung durch Ausgleichsgerade (nach Formel)

load si_messreihe_gestoert.dat
th2 = si_messreihe_gestoert(:,1);
rt2 = si_messreihe_gestoert(:,2);
th2m = mean(th2);
rt2m = mean(rt2);
th2s = (th2' * th2)/length(th2);    % Auch: cov(th2,1) mit Parameter "1" wegen Bezug auf N statt (N-1)
th2rt2 = (th2' * rt2)/length(rt2)
m = (th2rt2 - th2m*rt2m)/(th2s - th2m^2);
b = rt2m - m * th2m;

figure(3)
clf
set(gcf,'units','normalized')
set(gcf,'position',[0.42 0.02,0.57,0.65])
hl3 = plot(th2,rt2,'+',th2,m*th2+b);
set(hl3,'linewidth',1.5)
grid
