How to plot a graph from a growing .csv file with time?

6 views (last 30 days)
Hi! I want to plot a graph from a .csv file, which is created by an instrument and grows with measurement time. The file consists of two columns, i.e., elapsed time and measured values. My test program worked with writematrix, readmatrix as shown below but as the file gets bigger, it becomes slow as it reads the whole file every time. Is there a way to just read newly added date from the .csv file and add points to the already drawn plot?
%Test program
m=zeros(1,2);
dm=zeros(1,2);
save('TestData.csv','m');
h = animatedline;
for i=1:1E3
x=0.01*i;
y=sin(4*x);
dm(1,1)=x;dm(1,2)=y;
m=cat(1,m,dm);
writematrix(m,'TestData.csv');
q=readmatrix('TestData.csv');
addpoints(h,q(i,1),q(i,2));
drawnow limitrate;
end

Answers (1)

KALYAN ACHARJYA
KALYAN ACHARJYA on 31 Jan 2021
Edited: KALYAN ACHARJYA on 31 Jan 2021
One way:
MATLAB process the codes sequentially, If possible read the data from instrument one by one and plot them accordingly till the while condition true, you can consider the time period during the loop as a while loop condition.
while true
% read the elapsed time and measured values.
plot(elapsed_time,measured_val);
hold on;
end
  1 Comment
Seiji Kuroda
Seiji Kuroda on 3 Feb 2021
Dear Kalyan,
Thank you very much for your answer.
The instrument writes data to a CSV file at a constant rate, say 100 data/sec max.
Therefore, we are trying to find a way to add plot points at a slower rate which MATLAB
can handle, maybe 10 times/sec?
In such case, we need to read 10 new points from the previous cycle.
If you have a good idea, let us know.
Seiji

Sign in to comment.

Categories

Find more on Graphics Performance in Help Center and File Exchange

Products


Release

R2019a

Community Treasure Hunt

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

Start Hunting!