Aquí está la respuesta directa que estás buscando:
No puedes calcular \ $ P _ {- 1dB} \ $ desde \ $ IP_2 \ $.
¿Por qué? Porque \ $ IP_2 \ $ no contiene ninguna información sobre el término cúbico de la no linealidad (\ $ a_3 \ $), ya que solo depende de los términos lineales (\ $ a_1 \ $) y cuadráticos (\ $ a_2 PS Recordemos que:
$$
s_o (t) = a_1s_i (t) + a_2s_i ^ 2 (t) + a_3s_i ^ 3 (t)
$$
Para una entrada de un solo tono \ $ s_i (t) = A_0cos (\ omega_0t) \ $ donde \ $ \ omega_0 = 2 {\ pi} f_0 \ $, esto es lo que obtienes en la salida:
$$
\ begin {align}
s_o (t) & = s_ {o, \ DC} (t) + s_ {o, \ f_0} (t) + s_ {o, \ 2f_0} (t) + s_ {o, \ 3f_0} (t) \\
\ text {donde:} \\
s_ {o, \ DC} (t) & = \ frac {1} {2} a_2A_0 ^ 2 \\
s_ {o, \ f_0} (t) & = \ left (1+ \ frac {3} {4} \ frac {a_3} {a_1} A_0 \ right) a_1A_0cos (\ omega_0t) \\
s_ {o, \ 2f_0} (t) & = \ frac {1} {2} a_2A_0 ^ 2cos (2 \ omega_0t) \\
s_ {o, \ 3f_0} (t) & = \ frac {1} {4} a_3A_0 ^ 3cos (3 \ omega_0t)
\ end {align}
$$
La compresión de ganancia es una consecuencia del término cúbico (en términos más generales: de los términos de orden impar). Por eso puede calcular \ $ P _ {- 1dB} \ $ desde \ $ IP_3 \ $: porque contiene información sobre \ $ a_3 \ $ (y también sobre \ $ a_1 \ $, pero no desde \ $ IP_2 \ $:
$$
\ begin {align}
IP_ {i, 2} & = \ frac {a_1} {a_2} \\
IP_ {i, 3} & = \ sqrt {\ frac {4} {3} \ left \ lvert \ frac {a_1} {a_3} \ right \ rvert} \\
\ end {align}
$$
También tenga en cuenta que su código de Matlab ni siquiera considera el término cúbico:
% Parameters
a1=5; a2=4;