ploting two function on the same graph and the values get updated in the while loop
    2 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hallo Everyone
I would like to draw two functions on the same graph and the values of the x1,x2 and y1,y2 gets updated in the while loop to give me real-time-graph alike.  My code is working fine however i would like to insert the second function to the h1 and somehow i was not able to do so. For the graph i would like to have the  x1 = timeStampsVec,   y1= angVelVec   , x2 = signalVec   and y2 = punktVec . Can anyone please help me. I have wrote the whole code here to have a better image and understanding of what i am trying to do:
line 47
line 49
line 54
line 56
Thank you in advance
clear;
clc;
% Ein Arduino-Objekt erstellen
a = arduino('COM16', 'Nano33BLE');
a1 = serialport('COM14', 9600);
imu = lsm9ds1(a, 'SampleRate', 200, 'SamplesPerRead', 1, 'Bus', 1, 'OutputFormat', 'matrix','TimeFormat','duration');
%Eingangspuffer und Ausgangspuffer leeren
flush(a1);
% Initialisierung des Plots:
figure;
subplot(1, 1, 1)
h1 = plot(0, 0);
xlabel('Zeit (s)');
ylabel('Winkelgeschwindigkeit (rad/s)');
grid on;
ylim([-3 3]);
% Initialisierung der Vektoren:
t = datetime('now');
angVelVec = 0;
accelVec = 0;
signalVec = 0;
timeStampsVec = 0;
punktVec=[];
punkte=1
%ttttt
signalref = str2double(readline(a1));
% Schleife zum kontinuierlichen Lesen des Signals von D2 und zur Aktualisierung der Darstellung
tic;
startzeit = tic;
while toc(startzeit) < 10
    [accel, gyro, mag, timeStamps, overrun] = imu.read;
    % Siganlzeit aus milis() function
     if a1.NumBytesAvailable > 0
         signal1 = str2double(readline(a1));
         signal2 = signal1 -signalref 
         signalVec = [signalVec signal2];
         punktVec=[punktVec punkte];
         disp(signal2); 
     end
    % Aktualisierung der Signalvektoren
    angVelVec = [angVelVec gyro(2)]; % um die x-Achse
    accelVec = [accelVec accel(3)];
    timeStampsVec = [timeStampsVec second(timeStamps)];
    % Aktualisieren der Plots
    if isvalid(h1)
        set(h1, 'XData', timeStampsVec, 'YData', angVelVec);
    end
    drawnow;
end
0 comentarios
Respuestas (1)
  Shubham
    
 el 5 de Jun. de 2023
        Hi Taha,
To add a second function to the plot, you can simply define a new variable for the second plot and use the "hold on" command to plot both functions on the same figure. Here is the modified code:
clear;
clc;
% Ein Arduino-Objekt erstellen
a = arduino('COM16', 'Nano33BLE');
a1 = serialport('COM14', 9600);
imu = lsm9ds1(a, 'SampleRate', 200, 'SamplesPerRead', 1, 'Bus', 1, 'OutputFormat', 'matrix','TimeFormat','duration');
%Eingangspuffer und Ausgangspuffer leeren
flush(a1);
% Initialisierung des Plots:
figure;
subplot(1, 1, 1)
h1 = plot(0, 0);
xlabel('Zeit (s)');
ylabel('Winkelgeschwindigkeit (rad/s)');
grid on;
ylim([-3 3]);
% Initialisierung der Vektoren:
t = datetime('now');
angVelVec = 0;
accelVec = 0;
signalVec = 0;
timeStampsVec = 0;
punktVec=[];
punkte=1
%ttttt
signalref = str2double(readline(a1));
% Schleife zum kontinuierlichen Lesen des Signals von D2 und zur Aktualisierung der Darstellung
tic;
startzeit = tic;
% Define a new variable for the second plot
h2 = animatedline('Color','r');
while toc(startzeit) < 10
    [accel, gyro, mag, timeStamps, overrun] = imu.read;
    % Siganlzeit aus milis() function
     if a1.NumBytesAvailable > 0
         signal1 = str2double(readline(a1));
         signal2 = signal1 -signalref 
         signalVec = [signalVec signal2];
         punktVec=[punktVec punkte];
         disp(signal2); 
     end
    % Aktualisierung der Signalvektoren
    angVelVec = [angVelVec gyro(2)]; % um die x-Achse
    accelVec = [accelVec accel(3)];
    timeStampsVec = [timeStampsVec second(timeStamps)];
    % Aktualisieren der Plots
    if isvalid(h1)
        set(h1, 'XData', timeStampsVec, 'YData', angVelVec);
    end
    % Add second function to the same plot
    if isvalid(h2)
        addpoints(h2, signalVec,punktVec);
    end
    % Enable hold on command to keep both functions
    hold on
    drawnow;
end
I hope this helps!
0 comentarios
Ver también
Categorías
				Más información sobre Graphics Performance en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

