% vyèištìní pøedešlých hodnot
clear all


% nahraní dat
interferometr=load('MI_interference.txt'); 
piezo=load('MI_budic.txt');

%definovaní x-ove a y-ove souøadnice interferometru
yi = interferometr(:,1); % y= amplituda
xi = interferometr(:,2);  % x= èas


% definovaní x a y souøadnice piezoposuvu
yp=piezo(:,1); % y= amplituda
xp = piezo(:,2);  % x= èas

% ******************PIEZOPOSUV*******************************


cit= 187.5*10^(-9); % citlivost piezoposuvu, buï udána výrobcem, 
%nebo spoètená 1845.2*10-9 (FB-interferometr), 187.5*10^(-9)(Michelsonùv)

yup=fastsmooth(yp,17,3,1); % 15- vybere 15 hodnot, 3-proloží hodnoty psedo
%Gaussovou køivkou, 1-postupné vyhlazování)

pos2=yup*cit;       % vypoèet posunu pøes citlivost


%nalezneme maximim a minimum funkce 
minp= min(yup);
maxp=max(yup);

% urèení pozic maximální a minimální hodnoty- jedem smìr posunu
nalezenimin=find(yup==minp);
nalezenimax=find(yup==maxp);
nalezenimin1=nalezenimin+1; % z duvodu velkéhé zašumìní budícího signálu 
%a následného vyhlazení došlu k malému posunu minima proto je nutné tento
%posun kompenzovat. Pro %Michelsonùv interferometr +1, pro FB +27


%***********************************Interferometr**************************
l=632*10^(-9);  %vlnová délka laseru 632 , diody 1553
delka=l/2; % za jednu periodu interferovaného signálu se mìøený objekt posune
%o hodnotu delka

% nalezneme maximální a minimální hodnoty prùbìhu yi pro normování prubehu
% od 0-1 (linearni interpolace)

mini= min(yi);
maxi=max(yi);

% normujeme prùbìh dle lineární interpolace
Inor=(1/(maxi-mini))*(yi-mini);

%vypoèteme fáze interference
f1=2*(acos(sqrt(Inor)));
f2=2*(acos(-1*(sqrt(Inor))));

%vyhladíme
Ivyh=fastsmooth(yi,15,3,1);

%pro strídání fází po pul periode použijeme cyklus for s nasledujícími
%parametry


[m,n]=size(Ivyh); % pro stavení kroku cyklu for použijeme délku vektoru Ivyh


for i= 1:m-1
    if Ivyh(i)> Ivyh(i+1)
        fc(i)=(f1(i));
       
    else
        fc(i)=(f2(i));
        
    end
end

%transponujeme pøedešlý vektor
ft=fc';

%pomocí funkce unwrap zaruèíme skokovou zmìnu fáze o 2PI
f=unwrap(ft);

%fázi omezíme jen pro jeden smìr posunu
faze=f(nalezenimin1:nalezenimax);

%opìt od nulové hodnoty
faze0=faze()-faze(1);

%prùbì fáze vyhladíme
fazicka=fastsmooth (faze0,25,3,1);

%vypoèteme posun 
posinter2=fazicka*(delka/(2*pi));

%posun pøepoèteme na um
posinterum=posinter2*1000000;

%posun piezoposuvu omezíme pro jeden smìr (od 0) a opìt pøepoèteme na um
pospiezo=pos2(nalezenimin1:nalezenimax); 
pos3=pospiezo()-pospiezo(1);
pospiezoum=pos3*1000000;


%omezení intenzity interference pro "jeden smìr" a její normování

Ivyhor=Ivyh(nalezenimin1:nalezenimax);
minIvyhor= min(Ivyhor);
maxIvyhor=max(Ivyhor);
Ivyhnor1=(1/(maxIvyhor-minIvyhor))*(Ivyhor-minIvyhor);

%hodnoto maximálního posunu zmìøené interferometrem a vypoètené z
%citlivosti piezoposuvu
posun_pieozo=max(pospiezoum)
posun_interferometer=max(posinterum)

%výpoèet x-souradnice pro rozkmit budícího signálu
proc=0:100/(nalezenimax-nalezenimin1):100;

%Grafy
figure(1)

plot(posinterum,Ivyhnor1)
xlabel ('d[um]')
ylabel ('Unor[-]')

figure (2)
plot(proc,posinterum)
hold on
plot(proc,pospiezoum)
hold off
legend ('Interferometr', 'Piezoposuv')
xlabel('rozkmit budícího signálu [%]')
ylabel('d[um]')