# How to convert symbolic expressions to transfer functions

323 views (last 30 days)
Qian Feng on 31 Oct 2016
Commented: Paul on 27 Feb 2021
I am encountering the problem of converting a symbolic expression to become a transfer function. Specifically, the linear system I am dealing with contains a non-constant distributed delay term which requires performing an integration to obtain the corresponding transfer function. However, it seems that the integration operator int cannot be applied with tf variables directly.
On the other hand, if there is a way to convert symbolic expressions to transfer functions, then this problem can be easily handled in symbolic setting first.
Thanks a lot
Qian Feng on 2 Nov 2016
Edited: Walter Roberson on 2 Nov 2016
Here is the code,
r = 1;
s = tf('s');
syms x
A4 = [-1 x; -1-x^3 -1];
Ap = int(A4*exp(x*s),x, -r, 0);
The reason why we have an integration there is because I am dealing with a distributed delay term in the time domain.
The problem is that it seems we cannot mix a tf variable with a symbolic variable here.
However, the aforementioned integration can be easily handle if s is a symbolic variable, which is the reason why I asked about how to transfer a symbolic entity into a tf one.

Walter Roberson on 2 Nov 2016
Paul on 27 Feb 2021
Cool code. Siight mod to also handle the case when symExp is a constant.
syms s
symExp(s) = 5;
ExpFun = matlabFunction(symExp);
ExpFun = str2func(regexprep(func2str(ExpFun), '\.([/^\\*])', '\$1'));
TF = tf(ExpFun(tf('s')));
TF
TF =
5
Static gain.

### More Answers (1)

HyunSang Park on 28 May 2018
If you're just trying to find the peak value of the bode magnitude plot, might I suggest avoid using tf altogether? the peak value is when d(G(jw))/dw = 0. You can easily find the derivative with syms, and the plug in the w to the original tf.