天天看點

一階導數光譜檢測吸收波段方法的程式

clc;

clear;

close all;

%[WaveLength,Orig_Spectrum]=textread('Neodymium_Oxide.txt','%f%f','headerlines',3);

[WaveLength,Orig_Spectrum]=textread('Alunite_GDS84_Na03.txt','%f%f','headerlines',3);

Spectrum=Orig_Spectrum;

M=ones(11,6);

M(:,2)=-5:1:5;

M(:,3)=M(:,2).^2;

M(:,4)=M(:,2).^3;

M(:,5)=M(:,2).^4;

M(:,6)=M(:,2).^5;

%Coff=regress(SpectrumValue,M);

for i=1:length(Spectrum)

    if i<=5||i>=length(Spectrum)-4

        FiltedSpectrum(i)=Spectrum(i);

    continue;

    end

    Coff=regress(Spectrum(i-5:i+5),M);

    TempSpectrum=M*Coff;

    FiltedSpectrum(i)=TempSpectrum(6);

end

TempSpectrum=FiltedSpectrum';

FiltedSpectrum=TempSpectrum;

subplot(2,1,1)

plot(WaveLength,Orig_Spectrum)

%--legend('OriginalSpectrum of 氧化钕')

%text(1.8,0.93,'OriginalSpectrum of 氧化钕')

text(1.8,0.93,'OriginalSpectrum of Al')

subplot(2,1,2)

plot(WaveLength,FiltedSpectrum)

%--legend('FiltedSpectrum of 氧化钕')

%text(1.8,0.93,'FiltedSpectrum of 氧化钕')

text(1.8,0.93,'FiltedSpectrum of Al')

Deri_Spectrum=diff(FiltedSpectrum);

DeriSpectrum=zeros(1,length(Deri_Spectrum)+1);

DeriSpectrum(2:end)=Deri_Spectrum;

DeriSpectrum(1)=Deri_Spectrum(1);

figure

plot(WaveLength,FiltedSpectrum)

hold on

plot(WaveLength,DeriSpectrum*4,'--r')

plot(WaveLength,zeros(1,length(WaveLength)),':k')

legend('FiltedSpectrum',['1','^{','st','}',' order Derivative FiltedSpectrum(\times4) '],1)

hold off

ide