标签: ifft

ifft(fft(音频))只是噪音

我是否只是嵌套他们(iff(fft(audio)))或逐个窗口(window音频,做fft,做ifft,然后反转窗口,用eps替换零,然后合并样本(abs在管道中尝试这里和那里))我只得到噪音.

我知道这ifft只是fft与无限精度算术,无限多个样本等相反(对吗?)我正在使用64位浮点和44kHZ采样率.但是,我希望能够至少听到原始音频.

我的错误是实践还是理论?我可以给代码,如果它是一个错误.

numpy fft ifft

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

从阴影中正确使用fft2和fftshift的形状

我试图从Trucco/Verri文本"3D计算机视觉的入门技术"中看到的着色算法重建经典形状,但我很难理解matlab中的fft函数.基本上,我需要使用可积性约束来获得图像的深度(Z).在这种情况下,我不确定何时使用fftshift.这是我到目前为止的代码.基于http://www.mathworks.com/matlabcentral/newsreader/view_thread/285244 我基本上将所有的fft2都包裹在fftshifts中,但我不认为这是正确的用法.有人可以向我解释一下使用情况以及我做错了什么吗?谢谢.基本上,我试图将我的p和q(基于像素强度的更新值)转换为傅里叶域,以便在方程C中使用它们.然后我想将方程C转换回时域因为那会给我Z的深度.我还想根据傅里叶域中的C更新P和Q.

    wx = (2.* pi .* x) ./ m; 
    wy = (2.* pi .* y) ./ n; 
    wx = ifftshift(wx); wy=ifftshift(wy);

    Cp = fftshift(fft2(fftshift(p))); 
    Cq = fftshift(fft2(fftshift(q)));
    C = -1i.*(wx .* Cp + wy .* Cq)./(wx.^2 + wy.^2); 
    Z = abs((ifft2(ifftshift(C)))); 
    p = ifftshift(ifft2(ifftshift(1i * wx .* C))); 
    q = ifftshift(ifft2(ifftshift(1i * wy .* C)));
Run Code Online (Sandbox Code Playgroud)

matlab fft shape computer-vision ifft

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

fft 的点积

根据卷积定理,时域中的卷积是fft域中的乘积。通过正确的零填充,它可以工作:

% convolution in time domain
a = [1 2 3];
b = [4 5 6];
c = conv(a,b);

a_padded=[a 0 0]; b_padded=[b 0 0];
c_bis=ifft(fft(a_padded).*fft(b_padded));
% we do find c_bis=c
Run Code Online (Sandbox Code Playgroud)

然而,这个定理也应该以相反的方式工作,时域中的乘积是 fft 域中的卷积。我不明白这部分:

d = a.*b;
D=conv(fft(a_padded),fft(b_padded));
d_bis=ifft(D);
Run Code Online (Sandbox Code Playgroud)

这给出了 d_bis 的复向量。如何使用频域中的卷积来反转时域中的逐点乘积?

matlab fft convolution dft ifft

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

Matlab - 如何修复:警告:显示复杂输入的实部?

给定代码

function [nImg,mask] = myFunc(img,rl,rh)


    [n m] = size(img);
    mask = ones(n, m);

    % do some stuff
    %   more 
    %   and more 
    % 

    fourierImg = fft2(img); % take the fourier transform 2d for the given image
    fourierImg = fftshift(fourierImg); %  shift the fourier transform 
    output = mask.*fourierImg; % calc with the mask  % THAT LINE CAUSES 
    %  Warning: Displaying real part of complex input ? 
    ishifting = ifftshift(output); % grab the DC element 
    nImg = ifft2(ishifting); % inverse back to …
Run Code Online (Sandbox Code Playgroud)

matlab fft ifft

3
推荐指数
1
解决办法
8923
查看次数

FFT的逆与原始函数不同

我不明白为什么ifft(fft(myFunction))和我的函数不一样.它似乎是相同的形状,但是2的因子(忽略常数y偏移).我可以看到的所有文档都说fft没有做一些规范化,但ifft应该照顾它.下面是一些示例代码 - 你可以看到我已经提到了2的因素给了我正确的答案.谢谢你的帮助 - 它让我疯狂.

import numpy as np
import scipy.fftpack as fftp
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt

def fourier_series(x, y, wn, n=None):
    # get FFT
    myfft = fftp.fft(y, n)
    # kill higher freqs above wavenumber wn
    myfft[wn:] = 0
    # make new series
    y2 = fftp.ifft(myfft).real
    # find constant y offset
    myfft[1:]=0
    c = fftp.ifft(myfft)[0]
    # remove c, apply factor of 2 and re apply c
    y2 = (y2-c)*2 + c

    plt.figure(num=None)
    plt.plot(x, y, x, y2) …
Run Code Online (Sandbox Code Playgroud)

numpy fft scipy ifft

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

使用Numpy手动反转FFT

我有一个用于计算方波的傅里叶变换的小脚本,它可以很好地工作并在我反转fft使用时正确返回方波numpy.fft.ifft().但是,我无法通过手动累加谐波来将它们乘以它们各自的系数,我从numpy.fft.fft()下面得到的是我的脚本,我相信你会看到我的意图.

from numpy import zeros, concatenate, sin, pi, linspace
from numpy.fft import fft, fftfreq, ifft
import numpy as np
import matplotlib.pyplot as plt

N = 1024 # samples
T = 1 # period
dt = T/N # sampling period
fs = 1/dt # sampling frequency
t = linspace(0, T, N) # time points
functime = .... # square wave

funcfft = fft(functime) # fft
fftcoeffs = np.abs(funcfft)/N # coefficients, divide by N to get …
Run Code Online (Sandbox Code Playgroud)

python numpy fft scipy ifft

3
推荐指数
1
解决办法
1780
查看次数

如何在R中写fftshift和ifftshift?

numpy,我们有以下功能:

import numpy
from numpy.fft import fft2, ifft2, fftshift, ifftshift
Run Code Online (Sandbox Code Playgroud)

我想重写这些功能在河fft中的R作品一样fftfft2Python编写的.同样ifft2,我们必须这样做fft(,inverse=T)

现在我想知道如何在R中有效地重写fftshiftifftshift函数(对于矩阵).

python numpy r fft ifft

3
推荐指数
1
解决办法
1085
查看次数

Matlab:对于偶数实函数,FFT复数结果,IFFT实际结果

我正在测试Matlab中FFT和IFFT函数的有效性.

我可以将这些函数的输出与一个众所周知的数学事实进行比较:偶数,实数函数的傅里叶变换(如以0为中心的高斯),是另一个偶数,实数函数(FFT [真实,0居中高斯] =真实,0居中的高斯).这个事实应该适用于FFT和IFFT.

首先我制作网格:

nx = 256; % grid total pixel count
X = 500; % grid size (um)
dx = X/nx; %  grid spacing (um)
x = linspace(-nx/2,nx/2-1,nx)*dx; % x grid (um)

df = 1/(nx*dx); % spectral grid spacing (1/um)
f = linspace(-nx/2,nx/2-1,nx)*df; % f grid (1/um)
Run Code Online (Sandbox Code Playgroud)

我制作了高斯:

A = 1; % magnitude (arbitrary units) 
x_fwhm = 7; % Full width at half maximum diameter (um)

x0 = x_fwhm/sqrt(2*log(2)); % 1/e^2 radius (um)
y = A*exp(-2*x.^2./(x0)^2); % Gaussian …
Run Code Online (Sandbox Code Playgroud)

matlab fft ifft

3
推荐指数
1
解决办法
920
查看次数

递归逆FFT

我以递归模式实现了两个函数 FFT 和 InverseFFT。

这些是功能:

def rfft(a):
    n = a.size
    if n == 1:
        return a
    i = 1j
    w_n = e ** (-2 * i * pi / float(n))
    w = 1
    a_0 = np.zeros(int(math.ceil(n / 2.0)), dtype=np.complex_)
    a_1 = np.zeros(n / 2, dtype=np.complex_)
    for index in range(0, n):
        if index % 2 == 0:
            a_0[index / 2] = a[index]
        else:
            a_1[index / 2] = a[index]
    y_0 = rfft(a_0)
    y_1 = rfft(a_1)
    y = np.zeros(n, dtype=np.complex_)
    for k in …
Run Code Online (Sandbox Code Playgroud)

python fft scipy python-2.7 ifft

3
推荐指数
1
解决办法
1822
查看次数

幅度和相位频谱。改变相位而不影响振幅

我有在相关点具有等效间隔和相应测量值的数据。例如,这是我拥有的数据的摘录:

y =[2.118, 2.1289, 2.1374, 2.1458, 2.1542, 2.1615, 2.1627, 2.165 2.1687...]

点之间的间隔为 0.1

所以,我需要从数据中获取的是幅度谱(幅度与频率)和相位谱(相位角与频率)。此外,我应该将数据的相位偏移负 90 度 (-pi/2)。

在移动相位并保持幅度不变时,我需要执行逆 fft 并获得新信号。我想在 Python 中做到这一点。

你能给我一个执行此操作的示例吗?

我使用的代码取自另一个 SO 问题,但我做了一些修改

## Perform FFT WITH SCIPY
signalFFT = np.fft.fft(y)

## Get Power Spectral Density
signalPSD = np.abs(signalFFT) ** 2
signalPhase = np.angle(signalFFT)

## Shift the phase py +90 degrees
new_signalPhase =(180/np.pi)*np.angle(signalFFT)+90 


## Get frequencies corresponding to signal 
fftFreq = np.fft.fftfreq(len(signalPSD), 0.1)

## Get positive half of frequencies
i = fftFreq>0

##
plt.figurefigsize=(8,4)
#plt.plot(fftFreq[i], 10*np.log10(signalPSD[i]));

plt.plot(fftFreq[i], …
Run Code Online (Sandbox Code Playgroud)

python signal-processing fft phase ifft

3
推荐指数
1
解决办法
7571
查看次数