function x= signaltest (init,pas,fin,a1,a2,minlong,maxlong,NBfenetres);


%           x=signaltest(init,pas,fin,a1,a2,minlong,maxlong,NBfenetres);
%
% Option 1 : génère le signal digital 
%              t --> sin(a1*t+a2*theta(t)*t^2)
% où a1 et a2 sont deux constantes, t=init:pas:fin, et la fonction theta la
% fonction indicatrice d'un ensemble constitué de NBfenêtres fenêtres
% temporelles aléatoires de longueur comprises entre minlong et maxlong.
%
% Option 2: génère le signal digital 
%              t --> sin(a1*t)+.8*theta(t)*sin(a2*t)
% où a1 et a2 sont deux constantes, t=init:pas:fin, et la fonction theta la
% fonction indicatrice d'un ensemble constitue de NBfenêtres fenêtres
% temporelles aléatoires de longueur comprise entre minlong et maxlong. 

t=init:pas:fin;
teta=zeros(1,length(t));
teta_len=length(t);
max_s=fix(teta_len/minlong);
found=0;
range=fix(((fin-init)/pas)/NBfenetres)+1;
while (found==0) 
  last_pos=0;
  for i=1:NBfenetres
    if (last_pos<teta_len)
%      pos=last_pos+fix((teta_len-last_pos)*rand(1,1));
      len=minlong+fix((maxlong-minlong)*rand(1,1));
      pos=fix((i-1)*range+(range-len)*rand(1,1));
      for j=1:len
          if (pos+minlong)<=teta_len
            if (pos+j)<=teta_len
             teta(pos+j)=1;
             found=1;
            end;
          end;
      end;
      last_pos=pos+len;
    end;
  end;
end;
teta(teta_len)=0;
func=input('Entrer (1) pour sin(a1*t+a2*teta*t^2) ou (2) pour sin(a1*t)+.8*teta*sin(a2*t)');
f=0;
if (func==1)
  f=sin((a1+a2*teta.*t).*t);
elseif (func==2)
  f=sin(a1*t)+.8*teta.*sin(a2*t);
end;
x=f;
