Putting transfer function expression in the title of a bode plot

22 vues (au cours des 30 derniers jours)
Thomas Gahan
Thomas Gahan le 2 Mai 2017
Hi Consider the following code snippet:
num=[1 2];
den=[1 7 49];
trans=tf(num,den);
tran=evalc(trans);
bode(trans)
Title=('Bode plot of:', tran)
I want to put the transfer function in the title in rational form as a function of s. I got it working but the title is cut off at the top of the figure window and maximising the window does not help. How can I adjust the vertical position of the title so that it will all be visible. Or is there a better way of converting the tf expression to a string variable that can be passed to the title. Many thanks for any help you can give me. Regards. Thomas

Réponse acceptée

Star Strider
Star Strider le 2 Mai 2017
I couldn’t reproduce your results with your code (the evalc call threw an error in R2017a), so I used the Symbolic Math Toolbox to create the transfer function for the title.
The Code
num=[1 2];
den=[1 7 49];
trans=tf(num,den);
syms s
n = sym(num);
d = sym(den);
ns = poly2sym(n,s);
ds = poly2sym(d,s);
tfsym = ns/ds;
tftitle = latex(tfsym);
figure(1)
bode(trans)
title(sprintf('Bode plot of: $$ %s $$', tftitle), 'Interpreter','latex')
The Plot
  2 commentaires
Thomas Gahan
Thomas Gahan le 3 Mai 2017
Hi Star Strider Thank you so much for your reply, much appreciated. It worked perfectly in the 2010b version also. I have included the code I was using as I might not have had it correct when I sent it to you yesterday evening as I was working from memory. Once again thank you so much. Regards Thomas clc num=[1 2]; den=[1 7 49]; trans=tf(num,den); tran=evalc('trans'); bode(num,den) title(['Bode Plot of',tran])
Star Strider
Star Strider le 3 Mai 2017
As always, my pleasure.
The evalc call is an option I had not considered. I could not get it to display correctly either, the reason I decided to use the Symbolic Math Toolbox and let it create the appropriate LaTeX code.

Connectez-vous pour commenter.

Plus de réponses (1)

Andoni Medina Murua
Andoni Medina Murua le 17 Déc 2019
Modifié(e) : Andoni Medina Murua le 17 Déc 2019
Hi Star Strider, thanks for your reply. Solution works for me but it gives me this warning:
Warning: Error updating Text.
String scalar or character vector must have valid interpreter syntax:
$$
\frac{\frac{4882746935387697\,s}{35184372088832}+\frac{2444881814469459}{274877906944}}{s^2+\frac{2602689349497067\,s}{35184372088832}+\frac{1385815694070911}{1099511627776}}
$$
What's the issue, could you help me? Just tried using your example, it gives the same error.
thanks, regards
Andoni
  2 commentaires
Star Strider
Star Strider le 17 Déc 2019
This works correctly when I run it:
tftitle = '\frac{\frac{4882746935387697\,s}{35184372088832}+\frac{2444881814469459}{274877906944}}{s^2+\frac{2602689349497067\,s}{35184372088832}+\frac{1385815694070911}{1099511627776}}';
num=[1 2];
den=[1 7 49];
trans=tf(num,den);
syms s
n = sym(num);
d = sym(den);
ns = poly2sym(n,s);
ds = poly2sym(d,s);
tfsym = ns/ds;
% tftitle = latex(tfsym);
figure(1)
bode(trans)
title(sprintf('Bode plot of: $$ %s $$', tftitle), 'Interpreter','latex')
You did not correctly format the string (that I call ‘tftitle’ here) when you posted it, so I have no idea what the original problem with it could be.
Andoni Medina Murua
Andoni Medina Murua le 20 Déc 2019
Hi Star Strider
Thanks for your reply. I copy paste what you sent and still I get the same warning, maybe it's linked with the Matlab version? I'm running 2018b.

Connectez-vous pour commenter.

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by