Re: [SUGGESTIONS] for OCST (perhaps I'm wrong)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: [SUGGESTIONS] for OCST (perhaps I'm wrong)

A S Hodel
[name deleted]

>
>         Hi
>
>         I'm a guy who had to work with MatLab and preferred free
> software, so I started to surf with Octave. I also had to use the
> control package; initially I used Matlab's, until I found trouble, and
> then someone recommended me to use the OCST snapshots (which I didn't
> know, BTW :).
>
>         Ok, as it says this is work in progress, I'm reporting some
> slight differences I've noticed; if you already know them, sorry for
> being repetitive :)
>
>         ss2zp() admits an IU argument at MatLab's package. Not a guru,
>                 so no idea on what it means, though it could be Input
>                 Unit, or In Utero or ...
>
>         impulse() at Matlab also admits another set of arguments,
>                   being the system's state variables, the IU (still
>                   don't know what it it) and a time vector. Perhaps
>                   the form you offer and the one I need are easily
>                   calculated one from another, but not for the
>                   rookie. Then it'd just be a compatibility issue.
>
>         Haven't notice anyone else by the moment, but if you wish,
> I'll have to use Octave during the whole quarter, so I can dedicate to
> report tons of stuff related to compatibility with the control package
> (I'm supposed to be using MatLab).
>
>         Keep up the *good* work!

My guess of the Matlab IU input is for an input number.  This feature is
not available in the Octave ss2zp command, but can be obtained using
the sysprune function to prune off undesired inputs/outputs.  I started
the redraft of the OCST (the current snapshots) with no regard for Matlab
compatibility; the Matlab 4.x toolbox was too prone to user error because
the different representation formats (zp,ss,tf) had different nubmers and
shapes of its arguments.  The revised OCST uses a single variable - a
data structure - to represent a dynamic system, regardless of the internal
representation.  (see

@INPROCEEDINGS{hodtenetal96,
        AUTHOR             = {A. S. Hodel and R. B. Tenison and D. A. Clem and J. E. Ingram},
        ADDRESS            = {Dearborn, Mich.},
        BOOKTITLE          = {Proceedings of the 1996 {IEEE} International Symposium on Computer-Aided Control System Design},
        MONTH              = {Sept. 15-18},
        PAGES              = {386--391},
        PUBLISHER          = {{IEEE} Control Systems Society},
        TITLE              = {The Octave Control Systems Toolbox: A ${\rm MATLAB^{tm}}$-like {CACSD} Environment},
        YEAR               = {1996}
}
The Matlab 5 revised controls toolbox has also taken this approach in many
of its functions.  Unlike the OCST, the data structure is either strictly
continuous or strictly discrete.  OCST allows for sampled data systems, although
I'm now questioning the wisdom of having allowed this feature (it's a pain to
keep track of and most functions, e.g., bode, don't permit you to make use of
it).

I am now in the process of translating some of the OCST into .oct files for
greater speed.  Snapshots are available at ftp://ftp.eng.auburn.edu/pub/hodel.
(Work is being performed in my "spare" time, so it's progressing slowly.)

A S Hodel Dept. of Elect Eng, 200 Broun Hall Auburn Univ, AL 36849 (334)8441854
FAX:-1809       http://www.eng.auburn.edu/users/scotte    [hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: [SUGGESTIONS] for OCST (perhaps I'm wrong)

Kai Mueller
On Thu, Oct 23, 1997 at 10:45:25AM -0500, A. Scottedward Hodel wrote:

> [name deleted]
> >
> >         Hi
> >
> >         I'm a guy who had to work with MatLab and preferred free
> > software, so I started to surf with Octave. I also had to use the
> > control package; initially I used Matlab's, until I found trouble, and
> > then someone recommended me to use the OCST snapshots (which I didn't
> > know, BTW :).
> >
> >         Ok, as it says this is work in progress, I'm reporting some
> > slight differences I've noticed; if you already know them, sorry for
> > being repetitive :)
> >
> >         ss2zp() admits an IU argument at MatLab's package. Not a guru,
> >                 so no idea on what it means, though it could be Input
> >                 Unit, or In Utero or ...
> >
> >         impulse() at Matlab also admits another set of arguments,
> >                   being the system's state variables, the IU (still
> >                   don't know what it it) and a time vector. Perhaps
> >                   the form you offer and the one I need are easily
> >                   calculated one from another, but not for the
> >                   rookie. Then it'd just be a compatibility issue.
> >
[remaining text deleted]

Some remarks to impulse() [the same applies to step()]
and Matlab 4.x Control System Toolbox:

 o the data structure "sys" to represent a dynamic system
   did not exist in the Matlab 4.x CSTB.
   The packed system approach in the Mu-Tools can be regarded
   of a subset of the OCST system data structure. Therefore,
   the arguments canot be compatible with Matlab.

 o No attempt was made be compatible with Matlab's impulse().
   "impulse(jet707)" for example, is short and powerful.

 o OCST impulse() is equivalent to Matlab impulse() and dimpulse().
   The argument list ist shorter and OCST impulse() knows about
   sampling time, input and output names from the system
   data structure.

 o The parameter "inp" is the same as "IU" in Matlab (the input number).

 o OCST impulse() tries to estimate as much as possible.
   impulse() does not accept an "equally spaced time vector"
   as in Matlab. The parameter "tstop" is simply a scalar value.
   This allows impulse to estimate the step size automatically
   if the system is continuous.
   To plot the first 5 seconds of a systems impulse response
      "impulse(sys, 1, 5)"
   in OCST is considered to be easier to use (and safer) than
     "t=linspace(0,5,200);  impulse(a,b,c,d,1,t);"
   If you really *need* 200 data point you can specify
     "impulse(sys,1,5,200)".

--
 Kai P. Mueller
 Control Department (Regelungstechnik) | Phone [+49] (531) 391-3835
 Technical University Braunschweig     | Fax   [+49] (531) 391-5194
 D-38092 Braunschweig                  | Email [hidden email]