回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我尝试在Python中使用numpy和pyplot进行DFT和FFT。在</p>
<p>我的样本向量是</p>
<pre><code>x = np.array([1,2,4,3]
</code></pre>
<p>该向量的DFT系数为</p>
^{pr2}$
<p>所以基本上我们有10,-3+i,0和-3-1i作为DFT系数。在</p>
<p>我现在的问题是得到一个sin和cos的组合来拟合所有4个点。在</p>
<p>假设采样率为1hz。在</p>
<p>这是我的代码:</p>
<pre><code>from matplotlib import pyplot as plt
import numpy as np
x = np.array([1,2,4,3])
fft = np.fft.fft(x)
space = np.linspace(0,4,50)
values = np.array([1,2,3,4])
cos0 = fft[0].real * np.cos(0 * space)
cos1 = fft[1].real * np.cos(1/4 * np.pi * space)
sin1 = fft[1].imag * np.sin(1/4 * np.pi * space)
res = cos0 + cos1 + sin1
plt.scatter(values, x, label="original")
plt.plot(space, cos0, label="cos0")
plt.plot(space, cos1, label="cos1")
plt.plot(space, sin1, label="sin1")
plt.plot(space, res, label="combined")
plt.legend()
</code></pre>
<p>结果我得到了一个情节:</p>
<p><a href="https://i.stack.imgur.com/2h1Il.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2h1Il.png" alt="img"/></a><br/>
<sub>(来源:<a href="https://heeser-it.de/static/plot.png" rel="nofollow noreferrer">heeser-it.de</a>)</sub></p>
<p>为什么最后的曲线没有碰到任何点?在</p>
<p>谢谢你的帮助。谢谢!在</p>
<p><strong>编辑:</strong></p>
<pre><code>N = 1000
dataPoints = np.linspace(0, np.pi, N)
function = np.sin(dataPoints)
fft = np.fft.fft(function)
F = np.zeros((N,))
for i in range(0, N):
F[i] = (2 * np.pi * i) / N
F_sin = np.zeros((N,N))
F_cos = np.zeros((N,N))
res = 0
for i in range(0, N):
F_sin[i] = fft[i].imag / 500 * np.sin(dataPoints * F[i])
F_cos[i] = fft[i].real / 500* np.cos(dataPoints * F[i])
res = res + F_sin[i] + F_cos[i]
plt.plot(dataPoints, function)
plt.plot(dataPoints, res)
</code></pre>
<p>我的情节是:</p>
<p><a href="https://i.stack.imgur.com/onnjS.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/onnjS.png" alt="img"/></a><br/>
<sub>(来源:<a href="https://heeser-it.de/static/plot2.png" rel="nofollow noreferrer">heeser-it.de</a>)</sub></p>
<p>我在哪里失败?在</p>