1 function [X,Z,T_th]=gener_signal(ampl,nb_int)
\r
2 % génère un signal sinusoidal aléatoire
\r
5 % ampl désigne l'amplitude maximale du signal;
\r
6 % nb_int désigne le nombre d'intervalles entre mesures;
\r
7 % ainsi le vecteur des abscisses X comporte nb_int+1 valeurs.
\r
8 % Dans cette application on le minore à 500, en réalité
\r
9 % on acquiert 10000 mesures en 0.8 secondes environ!
\r
11 % variables de sortie
\r
12 % X est le vecteur des abscisses
\r
13 % réparties sur 1,2 période environ comme dans l'application
\r
14 % industrielle qui a fondé ce développement; ce paramètre sera
\r
15 % global aux blocs qui le nécessitent sous le nom etendue.
\r
16 % Z est le vecteur des images associé à X défini par
\r
17 % Z= a*sin(omega*x+phi)
\r
18 % où a,omega et phi sont pseudo-aléatoires, définis plus loin.
\r
19 % T_th désigne la valeur théorique de période, sortie à des fins de
\r
20 % vérification. Elle n'a pas de sens dans l'application industrielle
\r
21 % puisqu'elle n'est pas connue!
\r
23 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
24 % Fonctions connexes appelées
\r
26 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
30 error('Nombre de champs incorrects');
\r
32 if (ampl>0)*(nb_int>500)==0
\r
33 error('Champs incorrects. Voir tests d''entrée');
\r
37 % valeur modifiable mais attention aux effets éventuels; la méthode
\r
38 % est pensée pour cette valeur, conforme au problème initial.
\r
42 % Génération du signal "aléatoire"
\r
43 % remplacé dans le réel par les données des capteurs
\r
44 % renvoyées au format matlab choisi ci-dessous.
\r
45 % Si t est élement de [0,1] comme les renvoie rand, alors
\r
46 % T=(b-a)t+a est élément de [a,b].
\r
53 % définition de l'amplitude a choisie entre ampl/2 et ampl,
\r
54 % pour assurer la visibilité du signal produit.
\r
55 a=ampl/2*aleas(1)+ampl/2;
\r
56 % détermination de phi et omega
\r
57 omega=abs(aleas(2));
\r
60 % phi est ramené dans [O,T_th]
\r
63 % fabrication du vecteur X
\r
64 pas_X=etendue*T_th/nb_int;
\r
69 Z=a.*sin(omega.*X+phi);
\r