[R] Identification of Turning Points in a Signal

Ogbos Okike g||ted|||e2014 @end|ng |rom gm@||@com
Mon Feb 10 06:40:11 CET 2020


Dear Friends,
Wishing you the best of the day.

I have a data (Cosmic Ray) which exhibit flow patterns of a
sine/cosine wave, i.e. decreasing/increasing and registering crests
(points maximal increases) and troughs/pits (points maximal
decreases). These turning points are of interest to me. With pastecs
package and a few lines of code as (the residual is coming from
Fourier transformation of the data):
library(pastecs)
 tp<-turnpoints(data$residual)
 res<-(1:length(data$residual))[tp$pit]
 minima<-which(tp$pit & data$residual<= -100)
 dates<-data$date[minima]
 k<-data$residual[minima]
I usually pick all the turning points (trough) equal or below -100. If
I change the <= to >=, I pick all the crests.

Now, without first transforming the data, I wish to pick the same
turning points in the raw data. Indeed, the difference between the
transformed data and the raw data lies only in the amplitude of the
crest or trough, otherwise, the crests and trough are the same in both
signals.

When I tried the above code in the raw signal, the warning/error message is:
Warning message:
In tp$pit & data$residual <= -100 :
  longer object length is not a multiple of shorter object length.

A sample of the raw data is:
03 10 01 6.20636953199224
03 10 02 6.90829266565563
03 10 03 6.40434785174345
03 10 04 6.33235573547028
03 10 05 5.99039318317273
03 10 06 5.09049172975812
03 10 07 4.35257253795814
03 10 08 4.49655677050448
03 10 09 4.49655677050448
03 10 10 4.4425626832996
03 10 11 5.16248384603129
03 10 12 5.72042274714835
03 10 13 6.26036361919711
03 10 14 5.8284109215581
03 10 15 5.30646807857763
03 10 16 5.32446610764592
03 10 17 5.68442668901176
03 10 18 6.33235573547028
03 10 19 6.80030449124588
03 10 20 7.26825324702148
03 10 21 6.83630054938246
03 10 22 2.53477160206063
03 10 23 2.55276963112892
03 10 24 2.39078736951429
03 10 25 -0.48889728141246
03 10 26 -0.110938670978323
03 10 27 0.303015997592397
03 10 28 1.81485043932894
03 10 29 -8.04806949009518
03 10 30 -16.1471825708267
03 10 31 -17.0470840242413
03 11 01 -13.6094604721975
03 11 02 -8.98396700164638
03 11 03 -6.28426264140255
03 11 04 -5.78031782749036
03 11 05 -3.72854251370505
03 11 06 -2.95462726376849
03 11 07 -4.52045579270991
03 11 08 -3.54856222302213
03 11 09 -0.884853920914888
03 11 10 0.447000230138735
03 11 11 0.0150475324997218
03 11 12 -0.308916990729538
03 11 13 0.0690416197045984
03 11 14 -0.110938670978323
03 11 15 -0.938848008119764
03 11 16 -3.02661938004166
03 11 17 -3.92652083345627
03 11 18 -3.24259572886117
03 11 19 -1.67676719991974
03 11 20 -2.30669821730997
03 11 21 -2.9366292347002
03 11 22 -2.75664894401728
03 11 23 -3.44057404861238
03 11 24 -4.34047550202699
03 11 25 -3.87252674625139
03 11 26 -2.72065288588069
03 11 27 -2.25270413010509
03 11 28 -1.37080070575878
03 11 29 -0.0389465547051547
03 11 30 0.033045561568014
the first three columns are year, month and day, the last column % CR variation.

abline (h=0) specifies values below the average. I am interested in
picking the time and magnitude of all the turning points below zero.

Thank you for assisting me.
Best regards
Ogbos



More information about the R-help mailing list