Real Time Matlab Graphing
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have an excel file that updates every minute and I imported it into matlab with this code...
fid=fopen('CR1000_PU22_TTT_15sec_new1.csv');
c=textscan(fid,'%s %f %f %f %f %f %f %f %f %f %f %f','CommentStyle',...
{',,Min,Smp,Avg,Avg,Avg,Avg,Avg,Avg,Avg,Avg'},...
'delimiter',',','EmptyValue',nan);
c{1,1}=strrep(c{1,1},'UTC','');
CR1000_PU22_TTT_15sec.time=datenum(c{1,1},'dd/mm/yyyy HH:MM');
CR1000_PU22_TTT_15sec.HF_Highest=c{1,5};CR1000_PU22_TTT_15sec.HF_Middle=c{1,6};CR1000_PU22_TTT_15sec.HF_Low=c{1,7};
CR1000_PU22_TTT_15sec.TC_Highest=c{1,8};CR1000_PU22_TTT_15sec.TC_Middle=c{1,9};CR1000_PU22_TTT_15sec.TC_Low=c{1,10};
CR1000_PU22_TTT_15sec.TC_Wall_Surface=c{1,11};CR1000_PU22_TTT_15sec.TC_Plenum_Air=c{1,12};
clear c fid
...so the data is in a structure. If the excel data is constantly being updated. Can I make a graph that is constantly changing with the new data as well. If so how would I do this?
0 commentaires
Réponse acceptée
John Petersen
le 26 Juil 2012
Modifié(e) : John Petersen
le 26 Juil 2012
Here's an example of plotting one parameter. You don't really need the comparison of datenum with current since I put in a pause of 60s, but it is a check to see that the file really was updated. pos is used to read the file to the next line of data. I'm assuming the new data is appended to the file, which is why I increment pos each time. Not sure if this will load down your computer, but I'm hoping pause is really a sleep task:
pausetime = 60;
dirname = 'c:\myCR1000data\'; % example of directory
filename = 'CR1000_PU22_TTT_15sec_new1.csv';
file = dir(filename);
current = file.datenum;
f = figure;
pos = 1; % initial data line in file
while(1)
file = dir(filename);
if (file.datenum > current)
fid=fopen(filename);
c = textscan(fid,'%s %f %f %f %f %f %f %f %f %f %f %f',...
pos,...
'CommentStyle',...
{',,Min,Smp,Avg,Avg,Avg,Avg,Avg,Avg,Avg,Avg'},...
'delimiter',',','EmptyValue',nan);
fclose(fid);
pos = pos + 1;
c{1,1}=strrep(c{1,1},'UTC','');
CR1000_PU22_TTT_15sec.time = datenum(c{1,1},'dd/mm/yyyy HH:MM');
CR1000_PU22_TTT_15sec.HF_Low = c{1,7};
plot(f,CR1000_PU22_TTT_15sec.time, CR1000_PU22_TTT_15sec.HF_Low);
hold(f, 'on');
end
current = file.datenum;
pause(pausetime);
end
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Spreadsheets dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!