Mise en parallèle d'un son et d'un graphe s'affichant en temps réel //explications détaillées\\
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 :lol: ) à 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:
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
toc |
Code:
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 |
Ce 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.
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 !