php 做fft,什么是numpy.fft.rfft和numpy.fft.irfft及其在MATLA...

这篇博客介绍了numpy库中用于实数傅立叶变换的rfft和irfft函数。内容包括rfft如何处理实数输入以返回一半频率的复数结果,以及irfft如何通过补全对称频率来还原原始信号。同时,提供了MATLAB中实现rfft和irfft的代码示例,展示了如何在两个环境中获得相同的结果。
摘要由CSDN通过智能技术生成

numpy中的实际FFT使用这样的事实:实值函数的傅立叶变换就是说“偏斜对称”,即频率k处的值是频率Nk处k = 1的值的复共轭. N-1(正确的术语是Hermitian).因此,rfft仅返回与非正频率相对应的结果部分.

对于大小为N的输入,rfft函数返回对应于N / 2或低于N / 2的频率的FFT输出部分.因此,如果N是偶数(所有频率从0到N / 2),则rfft的输出大小为N / 2 1,如果N为奇数,则输出(N 1)/ 2(所有频率从0到(N-1)/ 2).观察功能层(n / 2 1)为偶数和奇数输入大小返回正确的输出大小.

所以要在matlab中重现rfft

function rfft = rfft(a)

ffta = fft(a);

rfft = ffta(1:(floor(length(ffta)/2)+1));

end

例如

a = [1,1,1,1,-1,-1,-1,-1];

rffta = rfft(a)

会产生

rffta =

Columns 1 through 3:

0.00000 + 0.00000i 2.00000 - 4.82843i 0.00000 + 0.00000i

Columns 4 through 5:

2.00000 - 0.82843i 0.00000 + 0.00000i

现在将它与python进行比较

>>> np.fft.rfft(a)

array([ 0.+0.j , 2.-4.82842712j, 0.-0.j ,

2.-0.82842712j, 0.+0.j ])

再现irfft

要重现irfft的基本功能,您需要从rfft输出中恢复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值