我在Python中有以下脚本。我正在计算一个数组的傅里叶变换。当我想绘制结果(傅里叶变换)时,我使用了计算的绝对值。然而,我不知道复数的绝对值是如何产生的。有人知道它是如何计算的吗?我需要在Java中重现这个脚本。
import numpy as np
import matplotlib.pyplot as plt
from numpy import fft
inp = [1,2,3,4]
res = fft.fft(inp)
print(res[1]) # returns (-2+2j) complex number
print(np.abs(res[1])) # returns 2.8284271247461903
4条答案
按热度按时间gzszwxb41#
np.abs给出了复数的大小,即sqrt(a^2 + b^2),在您的情况下是sqrt(8)。
https://numpy.org/doc/stable/reference/generated/numpy.absolute.html
yzuktlbb2#
对于
z = a + ib
,这变为:这就是欧几里得范数,你必须把真实的部和虚部的平方相加(不包括i),然后求平方。
https://www.varsitytutors.com/hotmath/hotmath_help/topics/absolute-value-complex-number
rqmkfv5c3#
从
numpy.absolute(arr, out = None, ufunc ‘absolute’)
到documentation:对于复数a+ib,绝对值为sqrt(a^2 + b^2)。
zzwlnbp84#
对于复值对
a+ib
,可以考虑使用java Math静态方法 hypot:该方法是毕达哥拉斯定理
sqrt(a*a + b*b)
的实现,但是另外提供下溢和上溢保护。