How do I find the impulse response function

5 visualizzazioni (ultimi 30 giorni)
How can I find the impulse response functiin from a transfer function. I do not wish to find the plot or the response values but rather the function or expression. I can manually enter the TF as a symbolic expression and determine the inverse Laplace transform, but the resulting expression is more complex (using exploring) then the plot of the 'impulse' function suggests.
  2 Commenti
Jacques Hebert
Jacques Hebert il 26 Nov 2017
I had left out the specific transfer function i am working with to find a more general result. if you are interested, the specific function i am working with is
0.0001163 s^2 + 0.07919 s + 1.612
-----------------------------------------------------------------------
0.0001112 s^5 + 0.003739 s^4 + 0.05894 s^3 + 0.4631 s^2 + 0.7542 s + 1.612
Continuous-time transfer function.
the decomposition i determined with 'residue' function
b=[0.0001163 0.07919 1.612];
a=[0.0001112 0.003739 0.5894 0.4631 0.6542 1.612];
[r,p,k]=residue(b,a);
is
r =
0.0005 + 0.0007i
0.0005 - 0.0007i
-0.2701 - 0.3806i
-0.2701 + 0.3806i
0.5392 + 0.0000i
p =
-16.4209 +70.7384i
-16.4209 -70.7384i
0.3089 + 1.3667i
0.3089 - 1.3667i
-1.4001 + 0.0000i
k =
[]
using this result the inverse laplace transform
ilaplace(((0.0005 + 0.0007i)/(s-(-16.4209 +70.7384i)))+((0.0005 - 0.0007i)/(s-(-16.4209 -70.7384i)))+((-0.2701 - 0.3806i)/(s-(0.3089 + 1.3667i)))+((-0.2701 + 0.3806i)/(s-(0.3089 - 1.3667i)))+((0.5392 + 0.0000i)/(s-(-1.4001 + 0.0000i))))
gives the result
(337*exp(-(14001*t)/10000))/625 - exp(t*(3089/10000 - 13667i/10000))*(2701/10000 - 1903i/5000) - exp(t*(3089/10000 + 13667i/10000))*(2701/10000 + 1903i/5000) + exp(t*(- 4622072445068011/281474976710656 - 88423i/1250))*(1/2000 - 7i/10000) + exp(t*(- 4622072445068011/281474976710656 + 88423i/1250))*(1/2000 + 7i/10000)
as i stated previously, the plot of this result is similar
but markedly different (more exagerated) than the plot of 'impulse' of the original transfer function.
i am unsure where i am making a mistake, but i dont believe i have correctly found the impulse response function of the given transfer function
Jacques Hebert
Jacques Hebert il 27 Nov 2017
If possible, I am having a similar, small problem finding the symbolic expression for the step response with a matching plot.
plotting the step response directly
calculating the step response from the previously determined impulse response
int(ilaplace((((0.0987 + 0.0000i)/(s-(-15.0950 + 0.0000i)))+(( 0.1672 + 0.0208i)/(s-(-8.5626 +12.1924i)))+(( 0.1672 - 0.0208i)/(s-(-8.5626 -12.1924i)))+(( -0.2165 - 1.1635i)/(s-(-0.7019 + 1.9580i)))+(( -0.2165 + 1.1635i)/(s-(-0.7019 - 1.9580i))))
this plot is similar, except centered around 0 rather than 1 for some reason. can you help me determine where ive gone wrong?

Accedi per commentare.

Risposta accettata

David Goodmanson
David Goodmanson il 26 Nov 2017
Hi Jaques,
I believe the problem is that you have a couple of small errors in the 'a' vector (they don't agree with the original transfer function denominator), which make a big difference in the result. If you make those corrections, then
b=[0.0001163 0.07919 1.612];
a=[0.0001112 0.003739 0.05894 0.4631 0.7542 1.612];
[r,p,k]=residue(b,a)
r =
0.0987 + 0.0000i
0.1672 + 0.0208i
0.1672 - 0.0208i
-0.2165 - 1.1635i
-0.2165 + 1.1635i
p =
-15.0950 + 0.0000i
-8.5626 +12.1924i
-8.5626 -12.1924i
-0.7019 + 1.9580i
-0.7019 - 1.9580i
Now all the poles have negative real part, which is good.
At this point rather than more symbolism I just went for a numerical result:
t = 0:.001:10;
[tt rr] = meshgrid(t,r);
[tt pp] = meshgrid(t,p);
f = rr.*exp(tt.*pp);
plot(t,sum(f))
grid on
and the resulting plot agrees nicely with the second one of yours.
  2 Commenti
Jacques Hebert
Jacques Hebert il 26 Nov 2017
Modificato: Jacques Hebert il 26 Nov 2017
thank you for pointing out my typo.
this does yield a result with negative real poles. but i am ultimately looking for a symbolic expression of the impulse response, rather than numeric result.
continuing with my previous method
this too results in an agreeable plot.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by