Create new table wit differentiate or diff from existing timetable
    9 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
I've got below timetable with daily measurements from my gas meter at home:
             Timestamps            GasM3
        ____________________    _____________
        14-Aug-2019 00:00:00       331.15    
        25-Aug-2019 00:00:00       332.37    
        26-Aug-2019 00:00:00       332.74    
        27-Aug-2019 00:00:00       333.97 
I would like to know the daily consumption, so I tried playing with "differentiate" & "diff" to get these values in a new table.
I've tried 
Test1 = differentiate(DailyGasDataTimeTable)
which gave the following error:
        Error using Visualization: Differential test</a> (line 17</a>)
        'differentiate' requires Curve Fitting Toolbox
and
Test2 = diff(DailyGasDataTimeTable)
which gave the following error:
        Undefined function 'diff' for input arguments of type 'table'.
        Error in Visualization: Differential test (line 17)
Unfortunately I'm stuck, please advise.
Kind regards,
Daniel   
0 commentaires
Réponses (4)
  Vinod
      
 le 28 Août 2019
        
      Modifié(e) : Vinod
      
 le 28 Août 2019
  
      You can extract the specific column, GasM3, from the timetable and use the diff function. Something like this:
data = thingSpeakRead(YourChannelNum,'OutputFormat','TimeTable');
deltaM3 = diff(data.GasM3);
newTable = timetable(data.Timestamps(2:end), deltaM3)
2 commentaires
  Kristina Collins
 le 31 Août 2020
        What if my timetable is missing entries, or the entries are unevenly timed? 
1 commentaire
  Olavo
 le 21 Août 2023
        
      Modifié(e) : Walter Roberson
      
      
 le 21 Août 2023
  
      Hello, Thanks for your answer it's very helpful!
What if I the variable I what to differentiate is not a fixed name and will be changing along the code? for example:
for i=1:10;
    deltaM(i) = diff(data.GasM3{i}); % -->> does not work with this notation
end
3 commentaires
  Steven Lord
    
      
 le 21 Août 2023
				Or you could use a numeric index.
T = array2table(magic(4))
A = T{:, 3} % Equivalent to T.Var3
If you're release R2023a or later, you may be able to compute directly on the table or timetable, as described on this documentation page.
T2 = diff(T)
  Olavo
 le 22 Août 2023
				Thanks Walter and Steven, very useful information.
Just to add some extra information, I found the function wildcardPattern very useful to get similar names from table. would be something like:
 varname = "GasM3" + wildcardPattern;
Communautés
Plus de réponses dans ThingSpeak Community
Voir également
Catégories
				En savoir plus sur Read Data from Channel 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!





