librosa.util.phasor
- librosa.util.phasor(angles, *, mag=None)[source]
Construct a complex phasor representation from angles.
When mag is not provided, this is equivalent to:
z = np.cos(angles) + 1j * np.sin(angles)
or by Euler’s formula:
z = np.exp(1j * angles)
When mag is provided, this is equivalent to:
z = mag * np.exp(1j * angles)
This function should be more efficient (in time and memory) than the equivalent’ formulations above, but produce numerically identical results.
- Parameters:
- anglesnp.ndarray or scalar, real-valued
Angle(s), measured in radians
- magnp.ndarray or scalar, optional
If provided, phasor(s) will be scaled by mag.
If not provided (default), phasors will have unit magnitude.
mag must be of compatible shape to multiply with angles.
- Returns:
- znp.ndarray or scalar, complex-valued
Complex number(s) z corresponding to the given angle(s) and optional magnitude(s).
Examples
Construct unit phasors at angles 0, pi/2, and pi:
>>> librosa.util.phasor([0, np.pi/2, np.pi]) array([ 1.000e+00+0.000e+00j, 6.123e-17+1.000e+00j, -1.000e+00+1.225e-16j])
Construct a phasor with magnitude 1/2:
>>> librosa.util.phasor(np.pi/2, mag=0.5) (3.061616997868383e-17+0.5j)
Or arrays of angles and magnitudes:
>>> librosa.util.phasor(np.array([0, np.pi/2]), mag=np.array([0.5, 1.5])) array([5.000e-01+0.j , 9.185e-17+1.5j])