Help debugging real time plotting issues

2 ビュー (過去 30 日間)
Harini
Harini 2023 年 10 月 16 日
コメント済み: Harini 2023 年 10 月 17 日
I am plotting Raw EMG data in MATLAB. Here is the code I am using for plotting after creating time vector.
% Function to update the real-time plots
function updatePlots(t, data)
if isvalid(fig)
% Create time vectors
tData = (1:length(data)) / samplingRate; % Create a time vector for the raw data
% Plot raw data
addpoints(h1, tData , data);
% Set the X-axis limits based on the time window
xlim(ax1, [t - timeToEdit.Value / 1000, t]);
drawnow limitrate;
end
end
end
Why does the plot have lines connected to the first datapoint. How do I go about debugging this

採用された回答

Voss
Voss 2023 年 10 月 16 日
"Why does the plot have lines connected to the first datapoint[?]"
Because tData(1) is always 1/samplingRate.
I guess you should be using t in your calculation of tData, but I can't say for sure how because I don't know what t represents. I gather it's a scalar number since otherwise the call to xlim would produce an error. You use t as the upper x-limit of your axes, so is it the end time in seconds of the new data? If so then maybe something like this:
tData = t - (numel(data)-1:-1:0) / samplingRate;
  1 件のコメント
Harini
Harini 2023 年 10 月 17 日
Hi Voss, thanks for your answer. The lines from origin have disappared but now there are lines connecting random points. Not sure why. There is a timer running used to plot amplitude vs time of the EMG data received from Arduino. The timer runs from 0 to t, where t is the elapsed time when data x is acquired from arduino. The data read from arduno is alright. It seems to be an issue with plotting.
% Start reading and processing data
while isAcquiringData
data = readline(arduinoObj);
data = str2double(data);
% Append data to buffers
dataBuffer = [dataBuffer, data];
% Update elapsed time
t = toc(startTime);
% Debugging: Display received data
%disp(['Received data: ', num2str(data)]);
% Check if the time window has elapsed
if t >= timeToEdit.Value / 1000
stopButtonPushed();
end
% Update real-time plots
updatePlots(t, dataBuffer);
end
end
end

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeArduino Hardware についてさらに検索

製品


リリース

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by