Create new table wit differentiate or diff from existing timetable
이전 댓글 표시
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
답변 (4개)
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)
Walter Roberson
2019년 8월 28일
0 개 추천
Use a timetable() object and use retime()
Kristina Collins
2020년 8월 31일
0 개 추천
What if my timetable is missing entries, or the entries are unevenly timed?
댓글 수: 1
Walter Roberson
2020년 8월 31일
Use retime(), See also fillmissing()
Olavo
2023년 8월 21일
편집: Walter Roberson
2023년 8월 21일
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
Walter Roberson
2023년 8월 21일
N = 10;
deltaM = cell(N,1);
for i = 1 : N
varname = "GasM3" + i;
deltaM{i} = diff(data.(varname));
end
This assumes you are looking for GasM31 GasM32 GasM33 and so on up to GasM310
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
2023년 8월 22일
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;
커뮤니티
더 많은 답변 보기: ThingSpeak 커뮤니티
카테고리
도움말 센터 및 File Exchange에서 Read Data from Channel에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!