用 Numpy 计算复数的绝对值

Posted

技术标签:

【中文标题】用 Numpy 计算复数的绝对值【英文标题】:The Absolute Value of a Complex Number with Numpy 【发布时间】:2020-07-19 17:45:13 【问题描述】:

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

【问题讨论】:

【参考方案1】:

np.abs 给出复数的大小,即 sqrt(a^2 + b^2) 在你的情况下它是 sqrt(8)。

https://numpy.org/doc/stable/reference/generated/numpy.absolute.html

【讨论】:

【参考方案2】:
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

【讨论】:

谢谢。是的,这会返回确切的结果。【参考方案3】:

numpy.absolute(arr, out = None, ufunc ‘absolute’) : 这个数学函数帮助用户计算每个元素的绝对值。

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

【讨论】:

也有用的答案,已解决。我赞成你的回答。

以上是关于用 Numpy 计算复数的绝对值的主要内容,如果未能解决你的问题,请参考以下文章

numpy的通用函数

用java 编写一个复数类

为啥复数的绝对值是浮点数?

Numpy (嵩老师.)

Python使用numpy包编写自定义函数计算中位数绝对偏差(MADMedian Absolute Deviation)度量数据列中数据的分散性( measures of dispersion)

python使用numpy包编写自定义函数计算SMAPE(对称平均绝对百分比误差)指标Symmetric mean absolute percentage errorSMAPE指标解读指标使用的注