Is there a way to add synchronize function to Matlab 2016a?

5 views (last 30 days)
Hi
I have two tables thet contain 2 columns each (time stamp & measured value). I would like to synchronize them both into one table that has 3 columns (time stamp & measured value1, measured value2) and have NaN value in the rows where either of measured value1 or measured value2 is missing for that time step.
I found the function synchronize (https://se.mathworks.com/help/matlab/ref/timetable.synchronize.html#d117e1415011) which seems to be perfect for the job but I have Matlab 2016a and it says that "Undefined function 'synchronize' for input arguments of type 'table'.".
Is there a way to added this function to Matlab 2016a or is there another way to perform this functionality in Matlab 2016a?
Thanks!
  1 Comment
Adam Danz
Adam Danz on 10 Jan 2020
Edited: Adam Danz on 10 Jan 2020
As you can see at the bottom of that page, that function was released in r2016b and cannot be imported in earlier releases. You'll have to write your own function or search for a pre-existing function. If your timetables have unique timestamps it could be as easy as vertically concatenating the tables and sorting the rows by the time column.

Sign in to comment.

Accepted Answer

Steven Lord
Steven Lord on 10 Jan 2020
As Adam Danz said, this function was released in release R2016b. It also only works on timetable arrays, not table arrays, as you can see from the description of the TT1 and TT2 input arguments. Compare this to a function like innerjoin, whose Tleft and Tright inputs can be either table or timetable arrays.
While you could theoretically write your own synchronize function like Adam suggested, a much easier alternative would be to upgrade to release R2016b or later if possible and then store your time-based data as a timetable (the timetable function was introduced in R2016b.)
  4 Comments
M.Abuasbeh
M.Abuasbeh on 15 Jan 2020
Thanks Steven!!
I thnik it would be a good idea to install R2016b.
Also I am wonding, is it a good idea to install both 2016b as well as the most recent version (for example R2019b)?
So I can write new code in the new vesion and have access to all the new functionalities.
Adam Danz
Adam Danz on 16 Jan 2020
Edited: Adam Danz on 16 Jan 2020
If the users of your program(s) have access to the most recent release of matlab, I see no reason not to use the most recent release.
On the other hand, if you know that users are currently using an old release of Matlab and have no plans to update, you should either
  1. write the program in the latest possible release that your users have access to.
  2. write the program in the most recent release and carefully select functions & features that are backwards compatible.
The problem occurs when code written in a newer release uses a function or a feature that was recently introduced and then that program is run on an earlier release that doesn't have access to the function or feature.
For example, you can see when tiledlayout was introduced by scrolling to the bottom of the function's documentation. If this function is run on a release prior to r2019b, it will cuase an unfamiliar function or variable error.
Lastly, at a more advanced level, you can detect the version number of the instance of Matlab running the code and use a conditional statement to handle actions taken for nearer and later releases. Demo:
% Return the matlab release number
vStrct = ver('Matlab');
vs = str2double(vStrct.Version);
% Detect if Matlab version is prior to r2016b
if vs < 9.1 || isnan(vs)
% Do something
else
% Do something
end

Sign in to comment.

More Answers (0)

Products


Release

R2016a

Community Treasure Hunt

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

Start Hunting!