Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Frequency response function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg82856] Re: Frequency response function
  • From: Steven Siew <siewsk at bp.com>
  • Date: Thu, 1 Nov 2007 05:19:17 -0500 (EST)
  • References: <fg6rll$e92$1@smc.vnet.net>

Thank you very much for your contribution.

Unfortunately, I can't get it to work for Mathematica Version 5.2
so I have to modified it. Could you state next time which version
of Mathematica your code is designed for. This is not so much a
criticism
but a constructive suggestion.

Also, have you considered starting a website to collect various
Mathematica notebooks
for various mathematica codes such as yours?

Steven Siew

On Oct 30, 7:57 pm, Will Robertson <wsp... at gmail.com> wrote:
> Hello,
>
> People have asked in the past for how to plot a power spectral density
> plot, or a frequency response plot, or whatever you like to call it.
> Since there isn't an archive of a good solution on this newgroup,
> here's a quick and basic solution that I just put together:
>
> FRF[signal_, tt : {t_, tmin_, tmax_, tstep_}] :=
>  Module[{s, list, fft, N, L, freq},
>   (* Generate the signal and its DFT: *)
>   list = Table[signal, tt];
>   fft = Abs[Chop@Fourier@list]^2;
>   (* Get the number of samples and throw away the wraparound: *)
>   N = Length[list];
>   L = If[OddQ[N], (N - 1)/2, N/2];
>   fft = Take[fft, L];
>   (* Scale the frequencies and plot the FRF: *)
>   freq = Range[L]/(N tstep);
>   ListLogPlot[Transpose@{freq, fft}, PlotRange -> All,
>    Joined -> True]
>   ]
> With[{\[Omega] = 2},
>  FRF[Sin[2 \[Pi] \[Omega] t] + Sin[2 \[Pi] 10 \[Omega] t], {t, 0, 10,
>    1/50}]]
>
> (Modifiable & distributable under the Apache License v2.)
> Obviously this is just a "first pass" at the many many features that
> should be added to such a function (such as padding, windowing,
> support for complex data even!). I don't even know if it works
> correctly for tmin != 0.
>
> I'd be great for people to post their own improvements in this thread.
> Eventually I might make a package out of the whole thing. (A port of
> the spectral density routines here would be ideally the best: <http://www.mecheng.adelaide.edu.au/~pvl/octave/>)
>
> Cheers,
> Will




  • Prev by Date: Re: Bug of Integrate
  • Next by Date: Re: Re: Setting Negatives to Zero
  • Previous by thread: Zoom2D
  • Next by thread: Re: ReadList -- file size limits?