2026a
# angle
相位角
# 语法
theta = angle(z)
# 说明
theta = angle(z) 为复数数组 z 的每个元素返回区间 [-π, π] 中的相位角。theta 中的角度表示为 z = abs(z).*exp(i*theta)。示例
# 示例
复数的幅值和相位
创建一个复数,并计算其幅值和相位。
z = 2*exp(im*0.5)
z = 1.7551651237807455 + 0.958851077208406im
r = abs(z)
r = 2.0
theta = angle(z)
theta = 0.5
FFT 相位
创建一个由频率为 15 Hz 和 40 Hz 的两个正弦波组成的信号。第一个正弦波的相位为 −π/4,第二个正弦波的相位为 π/2。以 100 Hz 的频率对信号进行一秒钟的采样。
using TyMath
using TyPlot
fs = 100
t = 0:1/fs:(1-1/fs)
x = cos.(2*pi*15*t .- pi/4) .- sin.(2*pi*40*t)
计算信号的傅里叶变换。将变换幅值绘制为频率函数。
y = fft(x)
z = fftshift(y)
ly = length(y)
f = collect((-ly/2:ly/2-1)/ly*fs)
stem(f, abs.(z))
xlabel("Frequency (Hz)")
ylabel("|y|")
grid("on")
计算变换的相位,删除小幅值变换值。将相位绘制为频率函数。
tol = 1e-6
z[abs.(z) .< tol] .= 0
theta = angle.(z)
stem(f, theta/pi)
xlabel("Frequency (Hz)")
ylabel("Phase / π")
grid("on")
复数的模
y = angle(3 + 4im)
y = 0.9272952180016122
# 输入参数
z - 输入数组标量 | 向量 | 矩阵 | 多维数组
输入数组,指定为标量、向量、矩阵或多维数组。如果 z 的元素是非负实数,则 angle 返回 0。如果 z 的元素是负实数,则 angle 返回 π。
数据类型: Int64 | Int32 | Int16 | Int128 | Float16 | Float32 | Float64 | UInt8 | UInt16 | UInt32 | UInt64
复数支持: 是