Bonjour !
Dans le cadre d'un projet, je suis amené à afficher des résultats d'un capteur de pression sous forme de graph sur MATLAB et si l'une des données dépasse une valeur fixée, je dois entendre un signal sonore ("alarme"). Je vous omets les détails pour une compréhension plus aisée.
J'ai réussi à faire tout ce que je souhaitais (merci à ce forum d'ailleurs ) à une chose près.
Pour vous introduire mon problème, vous pouvez commencer par tester l'un après l'autre ces 2 codes MATLAB qui valent mieux qu'un grand discours
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 %% 1er CODE clc close all clear all t=linspace(0,15,150); % abscisse s=40*(sawtooth(t)+1); % création dent de scie pour remplacer les valeurs du capteur (pour tester le code) figure(1); plot(t,s); hold on tic for t=1:150 plot(t/10,s(t),'bo'); pause(0.076); %cette valeur de pause me permet d'avoir un affichage presque en temps réel sur mon ordi. %Si vous connaissez une méthode plus précise, je suis aussi preneur... end tocCe que je souhaiterais est de pouvoir afficher mon graph comme dans mon 1er code, quasiment en temps réel (15s) mais en y ajoutant le son, comme dans le 2nd code. Ici je comprends très bien le problème, MATLAB doit lire et interpréter à la suite mes plot/sound/plot/sound ce qui empêche un affichage continu (temps réel), mais je ne sais pas comment y remédier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 %% 2ème CODE clc close all clear all % Creation of the sound fe=40000; dt=1/fe; t = 0:dt:0.3; f = 800; son=zeros(size(t)); son = sin(2*pi*f*t); pause(1); % creation figure 1 t=linspace(0,15,150); % abscisse s=40*(sawtooth(t)+1); % création dent de scie figure(1); plot(t,s); hold on tic for t=1:150 plot(t/10,s(t),'bo'); if 0==mod(t,4) % pour l'exemple ici, j'entends le signal toutes les 4 valeurs sound(son) else end pause(0.076); end toc
En fin de compte, j'aimerais pouvoir lancer le son en parallèle de la courbe afin que celle-ci ne s'interrompe pas, mais le lancement de ce son dépendrait des valeurs de cette courbe.
Plus tard, je souhaite pouvoir lancer le son en fonction des données reçues mais aussi pouvoir l'arrêter, chaque décision se prenant à l'arrivée d'une nouvelle donnée.
Voilà je continue de chercher et je m'en remets à vous!
Quelques pistes que j'étudie sont matlabpool et parfor, mais je comprends pas grand chose pour l'instant ...
Merci à ceux qui chercheront à m'aider !
Partager