{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 从DFT到DTFT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/mac/anaconda3/lib/python3.7/site-packages/mkl_fft/_numpy_fft.py:158: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", " output = mkl_fft.fft(a, n, axis)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from numpy import *\n", "from matplotlib.pyplot import *\n", "\n", "N = 32\n", "n = arange(0,N)\n", "xn = exp(-0.2*n)\n", "\n", "Xk = fft.fft(xn)\n", "\n", "# 定义插值函数\n", "def phi(w,k):\n", " return (sin(N*(w-2*pi*k/N)/2)/N/sin((w-2*pi*k/N)/2) * exp(-1j*(N-1)/2*(w-2*pi*k/N)))\n", "# 频域插值方法\n", "w = arange(-2*pi,2*pi,0.001)\n", "Xw = zeros([len(w),])\n", "for k in range(0,N):\n", " Xw = Xw + phi(w,k)*Xk[k]\n", " \n", "plot(w,abs(Xw),label='Interpolation in Freq.')\n", "\n", "# 时域补零方法\n", "w = linspace(0,2*pi,len(w))\n", "plot(w,abs(fft.fft(xn,len(w))),'--r',label='Zero-padding in Time')\n", "\n", "w = linspace(0,2*pi*(1-1/len(Xk)),len(Xk))\n", "plot(w,abs(Xk),'-o',label='N-Point DFT')\n", "\n", "legend(loc='best')\n", "\n", "xlabel('omega')\n", "\n", "show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }