1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
function [B,BINT,Res,RINT,STATS,R2,Fexp,errorvar]=comparerefoct(Matrix, VarLabels);
#function used to compare spectralon 1 to spectralon 2
# %input : Matrix (data : spectra of spectralon)
# % VarLabels : Wavelenghts nm
# %
# %output :
# % B : regressions coefficients
# % R^2 : correlation coefficient via the regression
# %
# %before :
# %load spectra.ascii
#%
#%
#%[B,BINT,Res,RINT,STATS,R2,Fexp,errorvar]=compareref(Matrix, VarLabels);
[n m]=size(Matrix);
s=std(Matrix')';
xm=mean(Matrix')';
xm=xm(:,ones(m,1));
s=s(:,ones(m,1));
Matrixs=(Matrix-xm)./s;
spec1=mean(Matrixs(1:5,:));
spec2=mean(Matrixs(6:end,:));
figure(1)
plot(VarLabels,spec1,'r-')
title('spec1 en rouge, spec2 en bleu')
grid on
hold on
plot(VarLabels,spec2,'b-')
# %regression du spec1 VS spec2
"%ajout d'une colonne de 1 Ã la matrice des donnees
[n m]=size(spec1);
spec1=[ spec1' ones(m,1)]';
#% debut de la regression de spec1 sur spec2
X=spec1';
Y=spec2';
[B,BINT,Res,RINT,STATS] = regress(Y,X);
B
R2=STATS(1,1)
Fexp=(STATS(1,2));
errorvar=STATS(1,4)
Yest=X*B;
figure(2)
plot(X(:,1),Y,'k*')
#%ajout de la droite d'ajustement
figure(2)
hold on
plot(X(:,1),Yest,'r-')
#%afficher la droite d'ajustement
Xmed=3*median(X(:,1));
Ymed=3*median(Y);
h=text(5+Xmed,Ymed(1)-5,['Y=',num2str(B(1)),'X + ',num2str(B(2))]);
set(h,'Color','red','LineWidth',2);
hold on
h1=text(7+Xmed,Ymed(1)-3,['R^2=',num2str(STATS(1,1))]);
set(h1,'Color','red','LineWidth',2);
#regression lineaire
#%regression de X1 sur X2
#%X1=X2*b + F
[n1 m1]=size(X(:,1)');
xmod=[ones(m1,1) X(:,1)]; #%matrice du modele
bmod=xmod\Y; #%coeff de regression!
Ycalc=xmod(:,2)*bmod(2,1)+bmod(1,1);# %matrice des X2 recalculees par le modele
l=VarLabels;
#%spectre résiduel
Xres=(Y'-Ycalc');
figure(3)
subplot(2,1,1),plot(l,Xres'),grid on,title('spectre résiduel')
subplot(2,1,2),plot(l,X(:,1)),grid on, title('spectralon vieux, spectralon (rouge), spectralon blanc par le modele(vert)')
hold on
plot(l,Y,'r')
plot(l,Ycalc,'g-')
endfunction |
Partager