我在一段时间内还没有完成DSP,但是我并没有预料到我对基础知识的理解会变得如此糟糕。 我有一个脚本,我正在用一个复杂的指数函数来调和一个音调。我期望的结果是一个移调。我的结果是非常意外的 - 我得到3声调,没有一个达到我期望的频率。有人能解释为什么我会得到这些结果吗?从numpy简单卷积产生的意外结果
这是脚本。
import sys
import numpy
import math
import scipy
from pylab import *
def gen_tone(f, fs, length):
t = linspace(0, length, length * fs)
return cos(2.0 * pi * f * t)
def gen_exp(f, fs, length):
t = linspace(0, length, length * fs)
return numpy.exp(1.0j * 2 * pi * f * t)
def plot_fft(f, fs):
FFT = abs(scipy.fft(f, 1024))/f.size
figure()
plot(FFT)
f100 = gen_tone(8000, 44100, 1)
f200j = gen_exp(1000, 44100, 1)
res = scipy.signal.fftconvolve(f100, f200j, 'full')
plot_fft(f100, 44100)
plot_fft(f200j, 44100)
plot_fft(res, 44100)
show()
你期望结果如何(我的意思是说)?你有什么作为频率? – usethedeathstar
正如沃伦的回答所说:你卷积了你的函数,而不是乘以它们。乘以复指数 - >频移。 – David
是的 - 这是我的失败。 – Daniel