- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个时间信号,我计算它的傅里叶变换以获得频率信号。根据帕塞瓦尔定理,这两个信号具有相同的能量。我用 Python 成功地演示了它。但是,当我计算频率信号的傅里叶逆变换时,能量不再守恒。这是我的代码:
import numpy as np
import numpy.fft as nf
import matplotlib.pyplot as plt
#create a gaussian as a temporal signal
x = np.linspace(-10.0,10.0,num=1000)
dx = x[1]-x[0]
sigma = 0.4
gx = (1.0/(2.0*np.pi*sigma**2.0)**0.5)*np.exp(-0.5*(x/sigma)**2.0)
#calculate the spacing of the frequencial signal
f=nf.fftshift(nf.fftfreq(1000,dx))
kk = f*(2.0*np.pi)
dk = kk[1]-kk[0]
#calculate the frequencial signal (FT)
#the convention used here allows to find the same energy
gkk = nf.fftshift(nf.fft(nf.fftshift(gx)))*(dx/(2.0*np.pi)**0.5)
#inverse FT
gx_ = nf.ifft(nf.ifftshift(gkk))*dk/(2 * np.pi)**0.5
#Parseval's theorem
print("Total energy in time domain = "+str(sum(abs(gx)**2.0)*dx))
print("Total energy in freq domain = "+str(sum(abs(gkk)**2.0)*dk))
print("Total energy after iFT = "+str(sum(abs(gx_)**2.0)*dx))
执行这段代码后,你可以看到两个第一个能量是相同的,而第三个比第一个小几个数量级,虽然我应该找到相同的能量。这里发生了什么?
最佳答案
与其他软件相比,numpy
FFT 程序确实会针对序列长度进行调整,因此您可以得到
nf.ifft(nf.fft(gx)) == gx
一些浮点错误。如果您的 dx
和 dk
是按通常方式计算的,则 dk*dx=(2*pi)/N
仅适用于未经调整的 FFT例程。
您可以使用
测试numpy.fft
的行为
In [20]: sum(abs(gx)**2.0)
Out[20]: 35.226587122763036
In [21]: gk = nf.fft(gx)
In [22]: sum(abs(gk)**2.0)
Out[22]: 35226.587122763049
In [23]: sum(abs(nf.ifft(gk))**2.0)
Out[23]: 35.226587122763014
这告诉我们 fft
是通常的未调整变换,ifft
将结果除以序列长度 N=num
。典型的 ifft
可以被模拟为
gxx = (nf.fft(gk.conj())).conj()
然后你就明白了
gx == gxx/1000
最多浮点错误。或者您可以使用
反转调整#inverse FT
gx_ = nf.ifft(nf.ifftshift(gkk))*(num*dk)/(2 * np.pi)**0.5
关于python - Parseval 定理不适用于 ifft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30073508/
所以,我看过一个关于 TDD 的视频,其中演示者说,你应该只对类的一部分进行单元测试,即为外部世界提供一些东西。他提到这很好,因为这种方法可以确保类遵守“契约(Contract)”,因此它履行了其职责
在CAP定理中,Redis被指定为缺乏可用性(具有分区容错性和一致性)的数据库。 但是在很多地方,Redis 被认为是一种高可用的键值存储。 什么是对的?如果您能提供深入的答案,我将不胜感激。 最佳答
我正在尝试证明以下内容: 1-pow : ∀ {n : ℕ} → 1 pow n ≡ 1 1-pow {zero} = refl 1-pow {suc x} = {!!} 我是 Adga 的新手,甚
我正在努力解决这个问题 - 我实际上已经找了一整天了! 我想我理解它背后的主要概念,但我正在努力弄清楚创建将形状投影到其上的 Axis 所需的数学? 因此,如果我有一个矩形,我会找出每个点,然后使用它
我试图证明以下内容: 1-pow : ∀ {n : ℕ} → 1 pow n ≡ 1 1-pow {zero} = refl 1-pow {suc x} = {!!} 我是 Adga 的新手,甚至不
所以我想计算任何给定三角形内的点数。我知道我必须使用 Pick 定理,但我的代码最终变得非常长,其中包含用于测试每种情况的 if-else if 语句的数量。我一直以此为指导 How many int
当说系统是 CP(一致性和分区)时,这是否意味着我们不能在复制的数据节点之间使用异步同步,并且每次写入都必须同步(甚至是事务性)复制? 据我了解,一致性意味着对于每次写入,后续读取(来自任何节点)都将
虽然我试图理解CAP中的“可用性”(A)和“分区容忍度”(P),但我发现很难理解各种文章的解释。 我感觉 A 和 P 可以走到一起(我知道事实并非如此,这就是我无法理解的原因!)。 深入浅出,A和P是
foundationdb 声明在 consistency 上吗?有效的? FoundationDB provides the strongest possible consistency model,
Azure 本身是 PaaS,而不是 IaaS。你同意? MS保证99%的可用性和强一致性。您可以在此处找到 MS SLA:http://www.microsoft.com/windowsazure/
我正试图掌握 Python 的 fft 功能,我偶然发现的一件奇怪的事情是 Parseval's theorem似乎不适用,因为它现在给出了大约 50 的差异,而它应该是 0。 import nump
我正在尝试在 Coq 中进行证明,并且我想使用我已经定义和证明的引理。以下代码可以吗? Lemma conj_comm: forall A B : Prop, A /\ B -> B /\ A. Pr
我试图通过 Isabelle(定理证明者)的 Isar 章节,第一个陈述是: lemma "¬ surj(f :: 'a ⇒ 'a set)" 我想了解什么是常数surj曾是。我知道查找定理很容易:
我想在分布式系统中使用 aerospike。 Aerospike 官方文档说: Aerospike 系统被归类为 AP 任何人都可以照亮它吗? Aerospike如何保证分布式环境下的AP模式。 最佳
这code example to generate a list of definitions对我有用,但只适用于一个索引列表。每当我尝试添加另一个列表(例如,对于定理)时,只有在设置垃圾中最后定义的
我打算使用 memcached 数据库。根据我的要求,高性能(速度)和可用性是最高优先级的。(一致性可以在某种程度上进行交易)请建议使用合适的数据库。 我正在关注 CAP Theorem . 按类别我
根据 CAP Consistency - All nodes gave the same data Availability means the ability to access the clust
如果我正确理解了 CAP 定理,可用性意味着即使节点出现故障,集群也会继续运行。 我见过很多人(http://blog.nahurst.com/tag/guide)将RDBMS列为CA,但我不明白RB
根据我目前所读到的有关 CAP 定理的所有内容,没有分布式系统可以同时提供这三者:可用性、一致性和分区容错性。 现在,Hadoop 2.x 引入了一项新功能,可以对其进行配置以消除 hadoop 集群
目前,我正在考虑拍摄图像及其光谱。现在 Parceval 的定理说两者应该具有相等的能量。然而,当我尝试在某些图像上对此进行测试时,numpy 真实 FFT 函数似乎并非如此。 这是我用于测试的代码:
我是一名优秀的程序员,十分优秀!