Create a transfer function that looks like a polynomial
4 views (last 30 days)
Show older comments
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.
0 Comments
Accepted Answer
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
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')
More Answers (1)
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.
0 Comments
See Also
Categories
Find more on Classical Control Design in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!