Bonjour,

Je reçois des données en temps réel d'un capteur via Matlab, qui trace des graphiques et les met à jour en temps réel. Je souhaiterai modifier ces signaux également en temps réel, je ne sais pas si c'est possible. J'ai un second programme faisant la valeur absolue, un filtre passe bas, et une normalisation avec un autre signal acquis précédemment. Je souhaiterai incorporer ce second programme dans le premier, j'ai tenté de l'incorporer à différents endroits mais cela ne fonctionne pas. Avez-vous des idées ?

Voici une partie du programme en temps réel :

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
%%Plots
function localReadAndPlotMultiplexed(interfaceObject, ~,~,~, ~)
global rateAdjustedBytesToRead;
bytesReady = interfaceObject.BytesAvailable;
bytesReady = bytesReady - mod(bytesReady, rateAdjustedBytesToRead);%%1664
 
if (bytesReady == 0)
    return
end
global data_array
data = cast(fread(interfaceObject,bytesReady), 'uint8');
data = typecast(data, 'single');
 
 
if(size(data_array, 1) < rateAdjustedBytesToRead*19)
    data_array = [data_array; data];
else
    data_array = [data_array(size(data,1) + 1:size(data_array, 1));data];
end
 
 
%% Update the plots
function updatePlots(obj, Event,  tmp)
global data_array
global plotHandles
for i = 1:size(plotHandles, 1) 
    data_ch = data_array(i:16:end);      
    set(plotHandles(i), 'Ydata', data_ch)
end
drawnow

Et si je veux juste filtrer par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
%%Butterworth filter: (order, cutoff frequency, type)
N = 4;
Fc = 6/1000;
[b,a] = butter(N,Fc,'low');
Butterfilt = filter(b,a,signal_abs);
Merci pour votre aide !

Lizz