bugGNU Octave - Bugs: bug #47302, control system feedback() OR TF()...

 
 

bug #47302: control system feedback() OR TF() gives wrong result z plane

Submitted by:  None
Submitted on:  Mon 29 Feb 2016 05:57:00 AM UTC  
 
Category: Octave Forge PackageSeverity: 3 - Normal
Priority: 5 - NormalItem Group: Incorrect Result
Status: Wont FixAssigned to: None
Originator Name: Kent DeinesOriginator Email: -unavailable-
Open/Closed: ClosedRelease: 4.0.0
Operating System: Microsoft Windows

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Mon 29 Feb 2016 05:48:57 PM UTC, comment #2:

This is the correct behavior of the control package functions, not a bug. The documentation could use some expanding or examples showing how to define different types of systems.

The easiest way to get what you want:

The control functions use positive powers of the variable z by default, whereas DSP people like to think in terms of negative powers of z, which you have to explicitly request as shown above (and also make sure the num and den vectors align).

If you try the above and something else doesn't work the way you expect, please file another bug report.

Mike Miller <mtmiller>
Project Administrator
Mon 29 Feb 2016 02:57:34 PM UTC, comment #1:

I think your way of thinking is correct. Unfortunately octave control tool box does not handle delays very well. If you just keep them as polynomials and do the math your self then filter still will work.

I had to do this for myself last week.
use conv( p1,p2) to multiply 2 polynomials
and p1+p2 to add them.
and deconv(p1,p2) to divide p1 by p2
HTH

Doug Stewart <dastew>
Mon 29 Feb 2016 05:57:00 AM UTC, original submission:

I claim no great expertise in control systems, but, my way of thinking is like this:
the polynomial [0 1]=>z^-1 has a delay of 1 sample, [0 0 1]=>z^-2 has a delay of 2 samples. [0 1 1]=>z^-1+z^-2 This interpretation is consistent with freqz and filter.
So
H=tf([ 0 0 1],[1 -1],1);
H(z)=z^-2/(1 -z^-1)
what I get is H(z) = 1/(z-1),\. In fact, shifting the numerator over does nothing, [0 0 1]=[0 0 0 0 1]

T=feedback(H) adds the numerator and denominator of H to get the denominator of T. When it does this, it should do it from left to right, not right to left. Ie adding like delays together.

Maybe my whole way of thinking about his is wrong.

Kent

Anonymous

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by mtmiller (Posted a comment)
  • -unavailable- added by dastew (Posted a comment)
  • -unavailable- added by None (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only project members can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 4 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Mon 29 Feb 2016 05:48:57 PM UTCmtmillerStatusNone=>Wont Fix
      Open/ClosedOpen=>Closed
    Mon 29 Feb 2016 04:09:30 PM UTCrik5Carbon-CopyRemoved 72865=>-
    Mon 29 Feb 2016 04:09:12 PM UTCrik5CategoryOctave Function=>Octave Forge Package

    Back to the top


    Powered by Savane 3.1-cleanup1