I have a simple question:

What is the unit of the frequency axis in the BodePlot? I searched the documentation, but only found this:

The scaling functions can be specified as ScalingFunctions->{{magfreqscale,magscale}, {phasefreqscale,phasescale}}.

The frequency scales magfreqscale and phasefreqscale can be "Log10" or "Linear", which correspond to the base-10 logarithmic scale and linear scale, respectively.

The magnitude scale magscale can be "dB" or "Absolute", which correspond to the decibel >and absolute values of the magnitude, respectively.

The phase scale phasescale can be "Degree" or "Radian".

But it doesn't say me if the frequency axis is in Hz or rad/s or rad/min or what ever ... I'm asking because I have two BodePlots which, I'm rather shure one is in Hz and the other in rad/s.

  • 1
    $\begingroup$ Radians/S, the lower-case omega is the giveaway. There's an example in the CoordinatesToolOptions section talking about coord. tool using Hz. $\endgroup$ – ciao Jan 29 '14 at 11:29
  • $\begingroup$ @rasher Thanks, I found the section, but it doesn't work. I'll try to give an example. ... $\endgroup$ – Phab Jan 29 '14 at 12:41
  • $\begingroup$ Works only with "Frame -> False". Sadly a bad solution for me. But with beeing sure Mma shows rad/s I'll convert it to Hz afterwards. This, unfortunately, makes my actual problem even bigger. $\endgroup$ – Phab Jan 29 '14 at 12:55
  • 1
    $\begingroup$ All you have to do is look in the documentation under Options->Ticks for examples of how to display plot ticks in Hz. $\endgroup$ – david Jan 29 '14 at 17:08

The answer is that the unit of the frequency axis depends on the unit of the complex variable in the transfer function. So it could be anything $rad/s$, $Hz$, $rpm$, $cps$, etc., depending on how the transfer function was obtained.

However, if you know the unit of the complex variable in the transfer function and would like the frequency in different units, it can be done by rescaling the variables.

For example, in the continuous-time system $1/(s+1)$ if the unit of $s$ is $rad/sec$, and you would like plot in $Hz$, do BodePlot[1/(s + 1) /. s -> I 2 Pi f, f]. You could also do BodePlot[TransferFunctionModel[1/(s + 1), s][2 Pi s]] because it is a continuous-time system.

To do the same thing ($rad/s$ to $Hz$) for a discrete-time system do BodePlot[tfmd/.z->Exp[I 2 Pi f T], f, SamplingPeriod->T], where $tfmd$ is the expression for the discrete-time transfer function in the complex variable $z$ and $T$ is the sampling period.

| improve this answer | |
  • 1
    $\begingroup$ This is sweet! I am curious as to how did you get this, especially the line of code? Is it through experience and knowledge or through documentation? I couldn't find what you have answered in the documentation for BodePlot. $\endgroup$ – ModCon Jun 17 at 17:49
  • $\begingroup$ @ModCon I know this because I'm the developer of this function and had to think through the design to handle units.:) It's documented here and here. When you realize that asking the unit of the frequency axis of BodePlot is no different than asking the unit of the x-axis in Plot[x^2, {x,0,1}], it's quite surprising and beautiful. $\endgroup$ – Suba Thomas Jun 17 at 20:32
  • $\begingroup$ Ah got it. I didn’t expect there to be new things in examples. Thanks. $\endgroup$ – ModCon Jun 18 at 10:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.