Natural frequencies of a transfer function
The natural frequency is a real number, and Matlab computes it correctly by taking the magnitude of the (complex-valued) pole.

As an example, the denominator of the transfer function of a second-order continuous-time system is given by

$$D(s)=s^2+2\omega_n\zeta s+\omega_n^2\tag{1}$$

where $\zeta$ is the damping ratio, and $\omega_n$ is the natural frequency. The poles are given by the roots of $(1)$. Assuming an underdamped system ($\zeta&lt;1)$, the poles are given by

$$s_{\infty}=-\omega_n\left(\zeta\pm j\sqrt{1-\zeta^2}\right)\tag{2}$$

from which we get

$$|s_{\infty}|^2=\omega_n^2\left[\zeta^2+(1-\zeta^2)\right]=\omega_n^2\tag{3}$$

So the natural frequency $\omega_n$ is given by the magnitude of the pole $s_{\infty}$.

Note that the natural frequency $\omega_n$ is not the actual oscillation frequency unless there is no damping (i.e., $\zeta=0$).