# Version 2.6 LTPDA Toolbox Software

This table summarizes what's new in Version 2.6:

New Features and Changes Version Compatibility Considerations Fixed Bugs and Known Problems Related Documentation at Web Site
Yes
Details below
Yes — Details labeled as Deprecated and removed features in descriptions of changes, below. Bug Reports at Web site Printable Release Notes: PDF

### Introduction

This version of LTPDA is 2.6. This document lists the changes since V2.5.5.

This version requires MATLAB 2010a or above.

### Main Changes

This version of LTPDA includes a vast number of speed improvements and bug fixes. In addition, the following significant changes are included in this release.

#### Function Handles

This release of LTPDA contains a first implementation of a new user-level class for creating LTPDA function handles. This class is called mfh and is somewhat similar to MATLAB function handles except that history is tracked.

Here are some example usages:

```%% Simple function of x
f1 = mfh(plist('func', 'x.^2', 'inputs', {'x'}));
x1 = ao(12);
o1 = f1(x1);```
```%% Simple function of x and y
f2 = mfh(plist('func', 'x^2 + y^2', 'inputs', {'x', 'y'}));
x = ao(2);
y = ao(3);
o2 = f2(x, y)```
```%% chain functions
x = ao(2);
y = ao(3);
o4 = f2(f1(x), y)```
```%% Use constants
a = ao.randn(10,10);
c = ao(2);
f6 = mfh(plist('func', 'x + c.*x', 'inputs', 'x', ...
'constants', {'c'}, 'constant objects', c));
o6 = f6(a)```
```%% Nest functions
c = ao(2);
h1 = mfh(plist('name', 'myFunc', 'func', 'x.^2', 'inputs', {'x'}));
f5 = mfh(plist('func', 'myFunc(x) + c.*x', ...
'inputs', 'x', ...
'subfuncs', h1, ...
'constants', {'c'}, 'constant objects', c));
o5 = f5(a)```

#### Algorithm Classes

There has been some work to implement what we call Algorithm Classes. That is, classes which are not associated with data, but instead implement an algorithm. You then create an instance of the algorithm and use it to process data. This is particularly sensible for complex algorithms because it allows us to keep the various utility functions and tests associated with the algorithm together in one class. This version of the toolbox includes the base class for these algorithm classes, ltpda_algorithm, and a new implementation of the MCMC algorithm as one of these classes. We maintain backwards compatibility for the most part by creating an using an MCMC object with the ao/mcmc method. Nonetheless, this was a large structural change so please report any strange behaviour.

### Other Changes

• The state of the Franklin number generator used in the ao(pzmodel) constructor is now returned in the procinfo of the output ao, and can be input when constructing further AOs to continue the sequence.
• You can now add and subtract timespan objects.
• The ssm/bode method no longer throws an error if the system is not stable. Instead a warning is thrown.
• The x ranges on an ao/iplot call can now be specified using timespan objects.
• The equality operators ao/eq and ao/ne now return AOs containing logical values to match the behaviour of ao/ge and ao/gt etc.
• The ao/fft method now supports other input data types (cdata and xydata). See commit dd86b5b below for details.
• The user object submit and bsubmit methods now return a plist containing the IDs etc of the submitted objects.
• The ao waveform constructor now has an ‘offset’ parameter.
• The ao/find method can now be configured to return the indices of the samples found as the main output.
• The ao data file reading constructor can now ignore header lines (via the ‘ignorelines’ plist key)
• The ao/split method has a new way to split data: into segments of a defined length.
• The ao constructor can now build ‘from xyz’ values.

a = ao('*.mat')

• You can now specify the vertices in ao/interp by passing an AO.
• The ao/delay method now has a ‘mode’ parameter which has a default of ‘samples’ which keeps the old sample shifting behaviour. A new mode ‘fftfilter’ performs fft filtering using a simple delay model (constructed from a pzmodel) to apply the delay. Another mode ‘timedomain’ which does a time-domain fractional delay filtering of the data.

### New Methods

• The ao class has two new static convenience constructors, ao.zeros and ao.ones.
• The matrix class now have a sqrt method.
• There is a new ao method called powerFit to fit a power-law to a frequency series using a log-likelihood approach.
• The ao class has a new method, subsData, which can replace the values at the specified indices in a number of different ways.
• The ao class has a new method called iacf which computes the inverse-auto-correlation function of a spectrum. There is also a method ao/cgfill which uses iacf then subsData in constrained gaussian filling mode to fill a data series containing gaps. These methods should be considered as beta releases.
• The miir and mfir classes have new convenience static constructors for creating standard filters: miir.lowpass, miir.highpass, miir.bandpass, miir.bandreject.
• You can create 3D AOs from a sequence of 2D AOs (by forming a matrix from the y values) using the new ao/scatter3D method.
• The matrix and collection classes have new methods: uminus, lpsd, abs, consolidate, detrend, diff, heterodyne, polyfit, timeaverage, downsample, interp, interpmissing, removeVal.
• The matrix class gets other new methods: fftfilter,
• The collection class gets other new methods: cohere, cpsd, tfe, filter, filtfilt

### Deprecated and removed features

The following methods and features have been deprecated:

• The LTPDAWorkbench is no longer supported but will kept in the toolbox as long as it continues to function. Once it fails to comply with the status of the toolbox, we will remove it from future releases.

The following methods and features have been removed:

• Some constructors historically supported a call like this:

a = ao(plist('plist', plist('vals', 1:10)))

These nested plist calls are no longer supported.

### MANTIS Issues Resolved

Issue Type Decription
0000615Bug ReportCapacitive actuation models descriptions are wrong
0000606Change RequestImprovement to pipeline chainability
0000604Bug ReportBug in quicklook pipeline steps regarding the 'consolidated' subdir
0000619Change RequestPipelines should be allowed to retrieve data from multiple repositories/databases
0000631Change Requesteliminating Running simulate complete when display time is 'false'
0000635Change Requestao/split only accepts a single timespan
0000627Change Requestao/heterodyne should accept a 'split' / 'times' option
0000640Change Requestao.diff should support order higher than 1 for the '3point' case
0000639Bug ReportHash files for extension modules
0000598Bug ReportAO constructor from mat file doesn't set xunits
0000603Bug Reportao/plotSpectrogram not available
0000597Change Requestao/interp should accept an ao for the vertices
0000600Change Requestao/interp should accept AOs in input plist
0000596Change RequestSearching in plists
0000622Change RequestDisplay plist parameter properties
0000629Bug Reportao.linfit does not deal properly with data with no errors
0000616Bug Reportlinfitsvd.m is not dealing with units properly
0000614Bug Reportsubmit/bsubmit methods shoul also return UUID
0000620Change RequestIntroducing windowing for FFT
0000623Bug ReportIntegrate does not look after units properly
0000621Bug Reporttest_ltp_iof2acc does not work ...
0000618Change RequestSuppress output in ao/plot
0000602Bug Report3rd party extensions return error during ltpda_startup
0000611Bug ReportTimespan objects should be accepted as x-range specifier
0000613Bug ReportVectors of time objects: issue with minusv
0000612Bug ReportTimespan class needs a minus method
0000599Change RequestBode plots for unstable SSM systems
0000605Bug ReportClicking help on STOCEstimateAcc/estimate_acc raises error
0000617Change RequestAccessing param properties