How do I find the impulse response function

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 件のコメント

Jacques Hebert
Jacques Hebert 2017 年 11 月 26 日
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 2017 年 11 月 27 日
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?

サインインしてコメントする。

 採用された回答

David Goodmanson
David Goodmanson 2017 年 11 月 26 日

1 投票

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 件のコメント

Jacques Hebert
Jacques Hebert 2017 年 11 月 26 日
編集済み: Jacques Hebert 2017 年 11 月 26 日
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.
David Goodmanson
David Goodmanson 2017 年 11 月 27 日
cool! it works

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Community Treasure Hunt

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

Start Hunting!

Translated by