# The lyapunovExponent function in the Predictive Maintenance Toolbox gives incorrect result when the input signal has angular frequency a multiple of \pi

4 Ansichten (letzte 30 Tage)
VARUN H S am 23 Feb. 2023
Bearbeitet: Bora Eryilmaz am 23 Feb. 2023
The lyapunovExponent function provided in the Predictive Maintenance toolbox (https://in.mathworks.com/help/predmaint/ref/lyapunovexponent.html) works very well but fails to provide the correct answer when the signal has an angular frequency of multiple of $\pi$. Given here are two signals with angular frequency $4\pi$ and $4\pi+0.01$. It works fine when the angular frequency is slightly off the multiple of $\pi$. The expected result is the LE as close to zero. But gives erroneous positive value when the angular frequency is a multiple of $\pi$. Is there a workaround about this?
dt=0.01;
t=0:0.01:49.99;
fs=1/dt;
x=sin(4*pi*t);
y=sin(((4*pi)+0.01)*t);
lag=13;
dim=2;
lyapunovExponent(x,fs,lag,dim,'ExpansionRange',800)
lyapunovExponent(y,fs,lag,dim,'ExpansionRange',800)
##### 1 Kommentar-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
Vishnu Ravindran am 23 Feb. 2023
If y=sin((2*pi-1e-10)*t) works similar to y given above, while x= sin((2*pi)*t) gives result similar to x above.

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Bora Eryilmaz am 23 Feb. 2023
Bearbeitet: Bora Eryilmaz am 23 Feb. 2023
When the signal is periodic, with no noise, the nearest neighbor of each data point in the signal on the phase plane will be essentially at the same location on the next cycle (or very close depending on sampling rate fs). So the distance to the nearest neigbor of each point will be essentially zero. This is why you are seeing the very small y-axis values on both plots (around e^-3300 and e^-770). In such a case, the linear approximations to the Average Log Divergence curves are no longer reliable. The slope of the linear approximation is the Lyapunov Exponent, which will also be inaccurate in this case.
A quick and dirty workaround is to add a little bit of noise to the signals so that essentially zero-distance neighbors are eliminated.
dt = 0.01;
t = 0:0.01:49.99;
fs = 1/dt;
x = sin(4*pi*t);
y = sin(((4*pi)+0.01)*t);
lag = 13;
dim = 2;
noise = rand(size(x)) / 10;
lyapunovExponent(x+noise, fs, lag, dim, 'ExpansionRange', 800)
lyapunovExponent(y+noise, fs, lag, dim, 'ExpansionRange', 800)
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Multirate Signal Processing finden Sie in Help Center und File Exchange

R2021b

### Community Treasure Hunt

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

Start Hunting!

Translated by