Group Abstract Group Abstract

Message Boards Message Boards

1
|
1.6K Views
|
8 Replies
|
7 Total Likes
View groups...
Share
Share this post:

Wrong frequencies in Periodogram?

POSTED BY: Vladimir Ivanov
8 Replies

Well - ok! I do admit that I was simply not willig to even consider a bug in a function which belongs to the prominent Fourier-family ...

At least PeriodogramArray[] seems to give a correct result:

n = 100;
data = Cos[2 \[Pi] Range[0, n - 1]*0.25] // N;
pdg = Periodogram[data, PlotRange -> All, ScalingFunctions -> {"Linear", "Linear"}, PlotStyle -> Dotted];
pdata = MapIndexed[{(First[#2] - 1)/n, #1} &, PeriodogramArray[data]];
Show[ListLinePlot[pdata[[;; 50]], PlotRange -> All, GridLines -> {{.25}, None}], pdg]

enter image description here

POSTED BY: Henrik Schachner

Mariusz, thank you.

POSTED BY: Vladimir Ivanov

Hi Vladimir, yes that is a bug. It is due to an incorrect setting of the DataRange option. To correct please see the attached notebook.

Attachments:
POSTED BY: Daniel Lichtblau

Henrik, the discrete Fourier transform works for any signal, not only for ones with the first and last elements equal.

We can check it formally, making sure that the explicit inverse Fourier transform

Table[Chop[1/Sqrt[n] (Fourier[data] . Table[Exp[-2 \[Pi] I t s / n ], {s, 0, n-1}])], {t, 0, n-1}]

brings us back to the initial data. And this expression, in the case of my signal, includes Exp[-2 [Pi] I t * 0.25 ] rather than Exp[-2 [Pi] I t * 0.255102 ], so the true frequency must be 0.25.

POSTED BY: Vladimir Ivanov
POSTED BY: Henrik Schachner

Why? Length[Range[0,100-1]] is 100.

POSTED BY: Vladimir Ivanov

Try it using Most[] on that range; it may be that you included one point too many.

POSTED BY: Daniel Lichtblau
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard