How to calculate the norm of the transfer function in frequency domain?
Show older comments
To calculate the norm of the transfer function by substituting s=jω is troublesome, especially for some complicated transfer functions. Is there a way to calculate the norm directly? Thanks!
For example, transfer funciton:

Substituting s=jω,

then,


Thus we can plot the figure in frequency domain,

Matlab code:
omega=0:0.01:10;
G1_N=0.25e-2 .* omega .^ 2 + 0.1e1;
G1_D=((2 .* omega) - 0.15e0 .* (omega .^ 3)) .^ 2 + (0.1e1 + 0.5e-2 .* (omega .^ 4) - (omega .^ 2)) .^ 2;
G1=sqrt(G1_N ./ G1_D);
plot(omega,G1)
Accepted Answer
More Answers (1)
Paul
on 13 Mar 2022
Check out
doc tf
to learn how to create a transfer function (tf) object. Once you have G(s) defined as a tf object use bode() to compute its magnitude (and phase if desired)
doc bode
3 Comments
@Paul is right that bode() and other functions in the system identification toolbox have great capabilities.
Iy you want a quick phase plot without using the toolbox, you can use the same simple approach that I mentioned for the magnitude plot:
omega=0.01:0.01:100;
s=1i*omega;
G=(-0.05*s-1)./(.005*s.^4+.15*s.^3+s.^2+2*s+1); %transfer function
subplot(211), semilogx(omega,abs(G),'-bx'); grid on
ylabel('Magnitude |G(\omega)|');
subplot(212), semilogx(omega,angle(G),'-bx'); grid on
xlabel('Frequency \omega'); ylabel('Phase \Phi(G(\omega)) (radians)');
Paul
on 13 Mar 2022
Actually, I was thinking of the Control System Toolbox. I'm not famiiar with the System ID toolbox.
If just wanting to use base Matlab, I'd probably use polyval().
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!
