numpy 带数值的复数的绝对值

q5lcpyga  于 2022-12-26  发布在  其他
关注(0)|答案(4)|浏览(134)

我在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
gzszwxb4

gzszwxb41#

np.abs给出了复数的大小,即sqrt(a^2 + b^2),在您的情况下是sqrt(8)。
https://numpy.org/doc/stable/reference/generated/numpy.absolute.html

yzuktlbb

yzuktlbb2#

sqrt(Re(z)**2 + Im(z)**2)

对于z = a + ib,这变为:

sqrt(a*a + b*b)

这就是欧几里得范数,你必须把真实的部和虚部的平方相加(不包括i),然后求平方。

https://www.varsitytutors.com/hotmath/hotmath_help/topics/absolute-value-complex-number

rqmkfv5c

rqmkfv5c3#

numpy.absolute(arr, out = None, ufunc ‘absolute’)documentation

This mathematical function helps user to calculate absolute value of each element.

对于复数a+ib,绝对值为sqrt(a^2 + b^2)。

zzwlnbp8

zzwlnbp84#

对于复值对a+ib,可以考虑使用java Math静态方法 hypot

Math.hypot(a, b)

该方法是毕达哥拉斯定理sqrt(a*a + b*b)的实现,但是另外提供下溢和上溢保护。

相关问题