标签: fftpack

如何在Android Studio中导入java包

我是android的新手,我想在android studio中导入jfftpack到我的项目,我不知道如何导入它.

原始代码是导入ca.uol.aig.realdoublefft,我不知道在哪里放java文件.我试图将它们放到libs文件夹中.

这是jfftpack源代码:

java import android fftpack android-studio

12
推荐指数
1
解决办法
5万
查看次数

如何将两个 2D RFFT 数组 (FFTPACK) 相乘以与 NumPy 的 FFT 兼容?

我正在尝试将用fftpack_rfft2d()(SciPy 的 FFTPACK RFFT)转换的两个二维数组相乘,结果与我从scipy_rfft2d()(SciPy 的 FFT RFFT)得到的结果不兼容。

下图共享了脚本的输出,其中显示:

  • 两个输入数组的初始化值;
  • 使用 SciPy 对 RFFT 的 FFT 实现进行变换后的两个数组scipy_rfft2d(),然后是乘法的输出,然后使用向后变换scipy_irfft2d()
  • 使用 SciPy 的 FFTPACK 实现 RFFT 与fftpack_rfft2d()和相同的事情fftpack_irfft2d()
  • 使用该测试np.allclose()的结果检查两个乘法的结果在使用其各自的 IRFFT 实现转换回来后是否相同。

为了清楚起见,红色矩形显示逆变换 IRFFT 后的乘法结果:左侧的矩形使用 SciPy 的 FFT IRFFT;右边的矩形,SciPy 的 FFTPACK IRFFT。当与 FFTPACK 版本的乘法固定时,它们应该显示相同的数据。

我认为与 FFTPACK 版本的乘法结果不正确,因为scipy.fftpack返回结果 RFFT 数组中的实部和虚部与来自scipy.fft的 RFFT 不同:

  • 我相信来自scipy.fftpack 的 RFFT返回一个数组,其中一个元素包含实部,下一个元素包含其虚部;
  • 在 scipy.fft 的RFFT 中,每个元素都是一个复数,因此能够同时保存实部和虚部;

如果我错了,请纠正我!我还想指出,由于scipy.fftpack不提供用于转换 2D 数组的函数,例如rfft2() …

python fft scipy fftpack numpy-ndarray

10
推荐指数
1
解决办法
722
查看次数

FInding fft 给出 keyerror :'Aligned ' pandas

我有一个时间序列数据

我试图找到 fft 。但它给出了 keyerror :Aligned 当尝试获取值时

我的数据如下所示

数据看起来像这样

这是代码:

import datetime
import numpy as np
import scipy as sp
import scipy.fftpack
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

temp_fft = sp.fftpack.fft(data3)


Run Code Online (Sandbox Code Playgroud)

fft time-series pandas fftpack

6
推荐指数
1
解决办法
9857
查看次数

我应该如何将 scipy.fftpack 输出向量相乘?

scipy.fftpack.rfft函数将 DFT 作为浮点向量返回,在实部和复部之间交替。这意味着要一起乘以 DFT(对于卷积),我将不得不“手动”进行复杂的乘法,这似乎非常棘手。这一定是人们经常做的事情 - 我假设/希望有一个简单的技巧可以有效地做到这一点,但我没有发现?

基本上我想修复此代码,以便两种方法都给出相同的答案:

import numpy as np
import scipy.fftpack as sfft

X = np.random.normal(size = 2000)
Y = np.random.normal(size = 2000)
NZ = np.fft.irfft(np.fft.rfft(Y) * np.fft.rfft(X))
SZ = sfft.irfft(sfft.rfft(Y) * sfft.rfft(X))    # This multiplication is wrong

NZ
array([-43.23961083,  53.62608086,  17.92013729, ..., -16.57605207,
     8.19605764,   5.23929023])
SZ
array([-19.90115323,  16.98680347,  -8.16608202, ..., -47.01643274,
    -3.50572376,  58.1961597 ])
Run Code Online (Sandbox Code Playgroud)

N.B. I am aware that fftpack contains a convolve function, but I only need to fft one half of the transform …

python scipy complex-numbers fftpack

5
推荐指数
1
解决办法
721
查看次数

Scipy的fftpack dct和idct

假设您使用dct函数,然后不对数据进行操作并使用反转变换; 倒置数据不会与预转换数据相同吗?为什么浮点问题?是报告的问题还是正常行为?

In [21]: a = [1.2, 3.4, 5.1, 2.3, 4.5]

In [22]: b = dct(a)

In [23]: b
Out[23]: array([ 33.        ,  -4.98384545,  -4.5       ,  -5.971707  ,   4.5       ])

In [24]: c = idct(b)

In [25]: c
Out[25]: array([ 12.,  34.,  51.,  23.,  45.])
Run Code Online (Sandbox Code Playgroud)

任何人都有解释为什么?当然,一个简单的c*10**-1方法可以解决这个问题,但是如果你重复调用函数来在几个维度上使用它,那么错误就会变大:

In [37]: a = np.random.rand(3,3,3)

In [38]: d = dct(dct(dct(a).transpose(0,2,1)).transpose(2,1,0)).transpose(2,1,0).transpose(0,2,1)

In [39]: e = idct(idct(idct(d).transpose(0,2,1)).transpose(2,1,0)).transpose(2,1,0).transpose(0,2,1)

In [40]: a
Out[40]: 
array([[[ 0.48709809,  0.50624831,  0.91190972],
        [ 0.56545798,  0.85695062,  0.62484782],
        [ 0.96092354,  0.17453537,  0.17884233]],

       [[ …
Run Code Online (Sandbox Code Playgroud)

python dct scipy fftpack

4
推荐指数
1
解决办法
5400
查看次数

以不同的分辨率获取输出 ifft

我正在尝试使用 scipy.fftp 在 python 中平滑和插入一些周期性数据。我已经设法获取数据的 fft,删除 wn 以上的高阶频率(通过执行 myfft[wn:-wn] = 0),然后使用 ifft(myfft) 重建数据的“平滑”版本。ifft 创建的数组与原始数据具有相同的点数。我如何使用该 fft 创建一个具有更多点的数组。

x = [i*2*np.pi/360 for i in range(0,360,30)]
data = np.sin(x)
#get fft
myfft = fftp.fft(data)
#kill feqs above wn
myfft[wn:-wn] = 0
#make new series
newdata = fftp.ifft(myfft)
Run Code Online (Sandbox Code Playgroud)

我还能够以与此处演示的相同分辨率手动重新创建系列使用 FFT 结果重新创建 时间序列数据而不使用 ifft

但是当我尝试提高 x 值数组的分辨率时,它也没有给我正确的答案。

提前致谢

尼尔

python fft scipy fftpack

2
推荐指数
1
解决办法
1093
查看次数