% Programme permettant de calculer le coefficient de variation pour une
% fonction à une variable, puis la fonction d'hétérogénéité associée
% Rq : plusieurs exemples sont disponibles...

% J.-C. Poggiale - Février 2007

clear;
clc;
dx=0.01;
x=0:dx:10;
T=1;
omega=2*pi/T;
A=1;
n=length(x);
n1=fix(n/3);

% Example 0 : constant function
%y=2*ones(1,n);

% Example 1 : periodic function
%y=2+A*sin(omega*x);

% Example 2 : linear function
y=x.^2;

% Example 3 : random values
%y=rand(1,n);

% Example 4 : increasing function defined by different formulas
%y(1,1:n1)=x(1,1:n1).*rand(1,n1);
%y(1,n1+1:2*n1)=2+1/10*x(1,n1+1:2*n1).*sin(2*pi/T*x(1,n1+1:2*n1));
%y(1,2*n1+1:n)=3*x(1,n-2*n1).*rand(1,n-2*n1);

% Example 5 : constant function
%y=2*ones(1,n);
%y(1,fix(n/3)+1:2*fix(n/3))=2*y(1,fix(n/3)+1:2*fix(n/3));
%y(1,2*fix(n/3)+1:n)=4*y(1,2*fix(n/3)+1:n);

figure(1)
plot(x,y)
coef=zeros(n,1);
dcoef=zeros(n-1,1);
h=waitbar(0,'Attendre...');
for taille=1:n
    waitbar(taille/n)
    tamp=zeros(taille,1);
    for i=1:n-taille+1
        suby=y(1,i:i+taille-1);
        tamp(i,1)=std(suby)/mean(suby);
    end
    coef(taille,1)=mean(tamp(1:n-taille+1));
end
close(h)
figure(2)
plot(coef)
n=length(coef);
z=(coef(20:n,1)-coef(19:n-1,1))/dx;
figure(3)
plot(z)