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

4 visualizaciones (últimos 30 días)
Seiji Kuroda
Seiji Kuroda el 31 de En. de 2021
Comentada: Seiji Kuroda el 3 de Feb. de 2021
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

Respuestas (1)

KALYAN ACHARJYA
KALYAN ACHARJYA el 31 de En. de 2021
Editada: KALYAN ACHARJYA el 31 de En. de 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 comentario
Seiji Kuroda
Seiji Kuroda el 3 de Feb. de 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

Iniciar sesión para comentar.

Categorías

Más información sobre Graphics Performance en Help Center y File Exchange.

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by