function [X,Z,T_th]=gener_signal(ampl,nb_int)
% génère un signal sinusoidal aléatoire
%
% variables d'entrée
% ampl désigne l'amplitude maximale du signal;
% nb_int désigne le nombre d'intervalles entre mesures;
% ainsi le vecteur des abscisses X comporte nb_int+1 valeurs.
% Dans cette application on le minore à 500, en réalité
% on acquiert 10000 mesures en 0.8 secondes environ!
%
% variables de sortie
% X est le vecteur des abscisses
% réparties sur 1,2 période environ comme dans l'application
% industrielle qui a fondé ce développement; ce paramètre sera
% global aux blocs qui le nécessitent sous le nom etendue.
% Z est le vecteur des images associé à X défini par
% Z= a*sin(omega*x+phi)
% où a,omega et phi sont pseudo-aléatoires, définis plus loin.
% T_th désigne la valeur théorique de période, sortie à des fins de
% vérification. Elle n'a pas de sens dans l'application industrielle
% puisqu'elle n'est pas connue!
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                       Fonctions connexes appelées
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Tests d'entrée
if nargin~=2
    error('Nombre de champs incorrects');
end
if (ampl>0)*(nb_int>500)==0
    error('Champs incorrects. Voir tests d''entrée');
end

global etendue
% valeur modifiable mais attention aux effets éventuels; la méthode
% est pensée pour cette valeur, conforme au problème initial.

format long e;

% Génération du signal "aléatoire"
% remplacé dans le réel par les données des capteurs
% renvoyées au format matlab choisi ci-dessous.
% Si t est élement de [0,1] comme les renvoie rand, alors
% T=(b-a)t+a est élément de [a,b].

aleas=rand(1,3);
if aleas(2)==0
    aleas(2)=1;
end

% définition de l'amplitude a choisie entre ampl/2 et ampl,
% pour assurer la visibilité du signal produit.
a=ampl/2*aleas(1)+ampl/2;
% détermination de phi et omega
omega=abs(aleas(2));
% période théorique
T_th=2*pi/omega;
% phi est ramené dans [O,T_th]
phi=T_th*aleas(3);

% fabrication du vecteur X
pas_X=etendue*T_th/nb_int;
i=0:nb_int;
X=pas_X.*i;

% fabrication de Z
Z=a.*sin(omega.*X+phi);






