differentiation of time series data

46 visualizzazioni (ultimi 30 giorni)
I have a time series data 'X 'of size 20000 X 50. My step size dt= 0.05
how do I find the velocity of these data
  2 Commenti
Walter Roberson
Walter Roberson il 15 Feb 2021
Extract the data and use gradient() ?
Samson
Samson il 15 Feb 2021
Modificato: Samson il 15 Feb 2021
how do I extract, please? I had something like this but not correct as it is not taken the difference across time:
phdiff=diff(X');
temp=(phdiff./dt);

Accedi per commentare.

Risposta accettata

Walter Roberson
Walter Roberson il 15 Feb 2021
If ts is the timeseries() variable then
X = ts.Data;
extracts the data.
With your data being 20000 x 50 my guess is that you have 20000 measurements for each of 50 entities, rather than 50 measurements for each of 20000 entities. If I am correct, then you would want the y gradient:
xstep = 1; %doesn't really matter, we are going to ignore
tstep = 0.5; %does matter
[~, ygrad] = gradient(X, xstep, tstep); %horizontal step first, vertical step second
  18 Commenti
Samson
Samson il 21 Feb 2021
It is the row that correspond to time. I am taking the velocity across the row which is a dimensionless time uniit. The values are phase values of oscillator distribeted in the interval (0,2pi]. I would finally need the mean of the phase velocity as there all independent rows
Walter Roberson
Walter Roberson il 21 Feb 2021
xstep = 1; %doesn't really matter, we are going to ignore
tstep = 0.5; %does matter
Xunwrapped = unwrap(X, [], 2);
[~, velocity_gradient] = gradient(Xunwrapped, xstep, tstep); %horizontal step first, vertical step second

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange

Tag

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by