Version 2.5 LTPDA Toolbox Software
This table summarizes what's new in Version 2.5:
New Features and Changes |
Version Compatibility Considerations |
Fixed Bugs and Known Problems |
Related Documentation at Web Site |
Yes Details below |
Yes — Details labeled as Removed methods in descriptions of changes, below. See Removed Methods. |
Bug Reports at Web site |
Printable Release Notes: PDF |
Introduction
This version of LTPDA is 2.5. This document lists the changes since V2.4.
This version requires MATLAB 2010a or above
The main focus of this release has been on improvements in time-series handling, bug fixing and underlying code improvements. In addition, the LTPDA repository underlying database structure has changed in this release, and the client-side functionality has been adapted to work with both the old repositories and new repositories. There have also been some fairly major changes to the toolbox, so keep reading to find out what they are! In addition, a significant number of bugs and change requests have been addressed.
New features and major changes
- A check is made on the plist parameters passed to methods now. If the user specifies a key which is not in the default plist described in the method documentation, a warning is issued. In addition, for parameters which have a specified set of possible values, an error will be thrown if the user tries to use a value not in the set.
- The repository connection manager has had a major overhaul with new settings in the LTPDA preferences for setting password expiry times and default repositories.
- A new utility function is available for creating new methods in extension modules. See help on utils.modules.makeMethod for details.
- The matrix/mcmc method can now handle priors and can do annealing with a thermostat.
- The ao/filtfilt method can now do frequency-domain filtering.
- The matrix class has a number of new methods which simply call the same method on the internal objects. For example:
m = matrix(ao.randn(10,10), ao.randn(10,10));
p = psd(m)
calls ao/psd on each of the internal AOs in the matrix.
- The LTPDA user-manual now has a Functions section which lists all class methods, organised by class and category.
- The ao/split method supports now a parameter offset whose value is an array of start/stop offsets to split by. Positive offsets are relative to the first sample. Negative offsets are taken from the end of the vector. For example [10 -10] removes 10 seconds from the beginning and end of the vector. An end time of 0 indicates the end of the vector.
- The rules for adding and subtracting objects were updated:
- for xydata objects, the x axes should match
- for tsdata objects, the nsecs and fs should match (evenly sampled data)
- for tsdata objects, the x axes should match modulo the toffset (unevenly sampled data)
- It is now possible to create a cdata AO using an existing AO as input. Here are some examples:
a1 = ao.randn(2,2);
a2 = ao(plist('vals', a1)) % a2.y == a1.y
a3 = ao(plist('vals', a1, 'axis', 'x')) % a3.y == a1.x
- The matrix and collection classes can now be nested. For example, you can do:
m1 = matrix(ao.randn(10,10), ao.randn(10,10));
m2 = matrix(ao.randn(10,10), ao.randn(10,10));
m = matrix(m1, m2);
In previous versions of LTPDA, these calls would just copy the input matrix objects. Now these ’copy constructors’ are removed and building of nested matrix and collection objects works.
- LTPDA includes a useful function for listing all the plist keys for constructors. For example:
keys(‘ao’)
- For the curious user, you can generate a class diagram (assuming you have graphviz installed) by doing:
utils.helper.make_class_diagram(false) % don’t show class methods
utils.helper.make_class_diagram(true) % show class methods
Changes to time-series data handling
In previous versions of LTPDA, time-series AOs (which contain a tsdata object) had two degrees-offreedom for describing the absolute position of the data in time. These were the ‘t0’ property which was used to specify the absolute time of the first sample, and then value of the first x sample (for evenly sampled data, this was always 0). In this version of LTPDA the property ‘t0’ has a new meaning. Now it refers to a reference time and a new property has been added to the tsdata class which encodes the time between this reference time and the first x sample. As such, it is now possible to have two time-series which have the same reference time (the same ‘t0’) but which have their data actually starting at different absolute times. An example is depicted in the following diagram:

This toffset property is mostly handled automatically by the toolbox, but it is possible for the user to set this value using the ao/setToffset method. The following situations can occur:
- Setting toffset via ao/setToffset means the data will be shifted in time.
- Setting the reference time via ao/setReferenceTime means the data stays where it is, the reference time (t0) is changed, and the toffset is updated accordingly.
- Changing the reference time vi ao/setT0 means the data moves in time because t0 is update but toffset retains its value.
To adapt to this change, the ao/timeshift method no longer behaves as it did. Instead, now it adjusts the toffset by the relative amount given. Note: This method does no fancy interpolation it just shifts the start time of the first sample by the given amount relative to t0.
For backwards compatibility, we do the following steps on saving and loading of objects:
- before saving, t0 = t0 + toffset
- after loading, t0 = t0 - toffset
This means objects created with older versions of the toolbox are handled as if the toffset is zero, and older versions of the toolbox should be able to read objects created with toolbox versions >= 2.5.
New class methods
- matrix/dispersion computes the dispersion function of an (smodel) system given the matrix of input signals.
- ao/qqplot is a method to do the quantile-quantile plot with confidence intervals.
- matrix/modelselect is method to compute the Bayes factors for an array of input models (ssm or matrix models are supported).
- ssm/getPortNamesForBlocks returns a list of port names for a given block. This can be useful for preparing plists for methods like ssm/simulate and ssm/bode.
- ssm/viewDetails shows a documentation page containing details of the given state-space model. It lists the inputs, outputs, states and parameters.
- matrix/unpack can be used to conveniently extract the objects from within a matrix object. Internally this calls matrix/getObjectAtIndex to ensure proper history tracking.
- The ao class now has some useful static constructors. You can do:
kb = ao.kb; G = ao.G; c = ao.c; e = ao.e;
e0 = ao.epsilon0; h = ao.h; mu0 = ao.mu0;
Methods removed
- ssm/getMatrixSelection was deprecated since Aug 2010.
- ssm/noiseSpectrum was deprecated since Aug 2010.
- ssm/setBlockDescriptions was deprecated since Aug 2010.
- ssm/setBlockNames was deprecated since Aug 2010.
- ssm/setBlockProperties was deprecated since Aug 2010.
- ssm/setPortUnits was deprecated since Aug 2010.
- ssm/setPortNames was deprecated since Aug 2010.
- ssm/setPortDescriptions was deprecated since Aug 2010.
- matrix/MultiChannelNoise was removed and replaced by matrix/mchNoisegenFilter.
- The matrix class constructor ‘from CPSD’ was removed and replaced by matrix/mchNoisegen.
Other Minor Changes of Note
- ssm methods CPSD and PSD were renamed to cpsd and psd.
- ssm/keepParameters is now deprecated and will be removed in a future release. Use ssm/subsParameters instead.
- ao/filter and ao/filfilt no longer support the additional output for returning the filter with its history filled. Instead the filter is returned in the procinfo.
- The syntax utils.const.physics.c to obtain values of frequently used fundamental physical constants now returns an AO object, with units and descriptions
- Spectral windows are now treated (from user’s point of view), merely via their name and length. All the other properties are calculated internally, when needed, based on the window definition.
- Operations like adding and subtracting objects with different units, but equivalent to the same SI units, are now supported. For example:
a1 = ao(1, plist('yunits', 'N'));
a2 = ao(2, plist('yunits', 'kg m s^-2'));
a3 = a1 + a2;
a4 = a2 + a1;
MANTIS Issues Resolved
Issue |
Type |
Decription |
0000555 | Bug Report | Robot does not generate plot for ao with data type 'fsdata'. |
0000561 | Bug Report | Plot not generated for some of the fsdata type objects |
0000536 | Change Request | matrix wrappers for common ao methods |
0000534 | Bug Report | iplot automatic ranging failing with two transfer functions |
0000538 | Bug Report | setFs does not update nsecs |
0000552 | Bug Report | Gnuplot interface uses Linux specific code to execute gnuplot, does not work on windows. |
0000551 | Bug Report | The wrong columns are plotted for data with error bars in gnuplot interface. |
0000554 | Bug Report | Missing install.php |
0000540 | Bug Report | split treats aos with and without .data.x vector differently |
0000535 | Bug Report | ao/convert doesn't retain units etc |
0000548 | Bug Report | iplotyy() mixes up left and right y-axis labels/yunits |
0000537 | Bug Report | iplotyy does not work |
0000549 | Bug Report | linewidths key for iplot not working |
0000558 | Bug Report | Erratic behaviour of split and consolidate |
0000541 | Bug Report | consolidate does not work as expected |
0000556 | Bug Report | Default value for marker size is too small |
0000545 | Change Request | ao(file,plist('type','tsdata','fs',fs,...) should automatically set xunits to s |
|
Version 2.5.1 LTPDA Toolbox Software |
|
Version 2.4 LTPDA Toolbox Software |
 |
©LTP Team