Hi, all.

I am a undergraduate computer engineer major, and I am currently learning Bode plots. I am very fluent with C++ but have been out of the game, as far as creating something goes. I am looking to implement a program that can construct a Bode Plot. A bode plot is a semi-logarithmic graphs of a transfer functions magnitude and phase versus the logarithm of the angular frequency w (omega). My problem does not lye in implementing a simple algorithm to do so, it lies in what graphics libraries are available to do such things as plot data, in this case a 2D semi-logarithmic plot efficiently?


I run on windows and linux natively. I am going to assume that the future replies will contain suggestions of something learning the boost libraries, or some feature of QT4 which I can use to platform my creation from windows to linux, and vice versa?

Secondly, I have no prior experience working with any graphics libraries, so would jumping into the adventure of creating a program that can construct a 2D Bode Plot be too difficult of a task without having some prior knowledge relating to graphics libraries, non-relevant to C++ fundamentals and techniques as I know am fairly knowledgeable about points, classes, virtual class, inheritance, templates, advanced data algorithms and data structures, so no trouble could occur there.

If you want to stick to C++, and remain cross-platform, I would just suggest you use Qwt (add-on to Qt). The image on their home-page is a Bode plot, so I'm pretty sure you can use that library for your purpose.

If you don't absolutely need C++, then Matlab or Octave is probably the way to go.

All of the above are entirely cross-platform, of course. It just depends on whether you need C++ or not (e.g. if the way you compute your system response is a piece of complicated C++ code, then the effort to move it into Matlab/Octave would be greater than the effort to learn and use Qt/Qwt, but otherwise, Matlab/Octave would be simpler and quicker).

This article has been dead for over six months. Start a new discussion instead.