$H_\infty$ norm of a transfer function by Matlab

895 Views Asked by At

Consider the simplest case:
$$H(z) = \frac{z+1}{z+2}$$

I use two methods to find $H_\infty$-norm:

H = tf([1 1],[1 2],.001);

[ninf,fpeak] = norm(H,inf)
ninf =

0.6667
fpeak =

0
[ninf1,fpeak1] = hinfnorm(H)   
ninf1 =

Inf

It seems odd, the answers are different.
What did I miss?

1

There are 1 best solutions below

0
On BEST ANSWER

If the system is unstable, the $H_\infty$ norm is infinite. You have a discrete time system with a pole greater than 1 in absolute value hence the answer inf. First one doesn't check for stability and converts it to state space system.

The discrepancy is due to the fact that norm() command only checks for $L_\infty$ not necessarily $H_\infty$ (for stable real-rational systems these coincide). That should be emphasized more in the documentation in my opinion.

For example, 2-norm is correctly caught.

>> [ninf,fpeak] = norm(H)
Warning: The H2 norm is infinite because the system is unstable. 
> In ctrlMsgUtils.warning (line 25)
  In ltipack.ssdata/normh2 (line 70)
  In ltipack.ltidata/normh2 (line 85)
  In ltipack.SystemArray/normh2_ (line 7)
  In DynamicSystem/norm (line 40) 

ninf =

   Inf


fpeak =

     []

This is even worse because now it reassures that the command is checking Hardy spaces. Matlab being matlab again.