Create a transfer function that looks like a polynomial

4 views (last 30 days)
Hello everyone I have a function called C
C=inv(Psi'*Psi)*Psi'*E1;
The challege I am having is creating a transfer function from C called filterC that looks like the picture that is attached.
Note the picture attached is an example. My values will be different.
whenever I do prefilter=tf(C) I get values like in row form
Prefilter=tf(C)
Prefilter =
From input to output...
1: -0.8673
2: 0.3917
3: 0.2832
4: -0.6459
5: -0.08966
Static gain.
How can I get my transfer function to look similar to this?
Am I doing something wrong?
Any help is greatly appreciated.

Accepted Answer

Ameer Hamza
Ameer Hamza on 5 Nov 2020
Edited: Ameer Hamza on 5 Nov 2020
If you have filter cofficient, then you need to pass following options to tf()
C = [1 -1.047 0.558 0.2608 -0.7408 0.09526];
sys = tf(C, 1, .01, 'variable', 'z^-1')
Result
>> sys
sys =
1 - 1.047 z^-1 + 0.558 z^-2 + 0.2608 z^-3 - 0.7408 z^-4 + 0.09526 z^-5
Sample time: 0.01 seconds
Discrete-time transfer function.
Note that, in this case, C must be a row vector.
In your question, you are using C as a column vector; therefore, you are getting five transfer functions with static gains.
  3 Comments
Heraldo Tello
Heraldo Tello on 5 Nov 2020
Edited: Heraldo Tello on 5 Nov 2020
I believe it should look like this
filterC = 1 - 0.8673 z^-1 + 0.3917 z^-2 + 0.2832 z^-3 + 0.6459 z^-4 + 0.08966 z^-5
Ameer Hamza
Ameer Hamza on 5 Nov 2020
Edited: Ameer Hamza on 5 Nov 2020
You can make it like this by adding a 1 at the beginning of cofficients vector
filterC=tf([1 C'], 1, .01, 'variable', 'z^-1')

Sign in to comment.

More Answers (1)

Star Strider
Star Strider on 5 Nov 2020
Since it is a ‘static gain’ object, it acts just like a simple amplifier. It has no frequency-dependent characteristics, so it has no variable associated with it.

Products


Release

R2015b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!