{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"DSP Basics - Prof Ryan Robucci - This notebook introduces some basic code processes required in the field of DSP "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A good reference for getting started with numpy and ploting\n",
"https://www.labri.fr/perso/nrougier/teaching/matplotlib/\n",
"\n",
"(This is a documentation cell, note I can use latex: $\\omega$)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The cell below contains the function zplane which is not commonly included with python packages\n",
"\n",
"To use it your own code you can download the file\n",
"* https://bitbucket.org/cfelton/examples/raw/f3383e14f18a57852e17c10ee4cd316fbfafbf85/snippets/zplane/plot_zplane.py\n",
"\n",
"Then use the following import in your pyton code:\n",
"* from plot_zplane import zplane \n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# Copyright (c) 2011 Christopher Felton\n",
"#\n",
"# This program is free software: you can redistribute it and/or modify\n",
"# it under the terms of the GNU Lesser General Public License as published by\n",
"# the Free Software Foundation, either version 3 of the License, or\n",
"# (at your option) any later version.\n",
"#\n",
"# This program is distributed in the hope that it will be useful,\n",
"# but WITHOUT ANY WARRANTY; without even the implied warranty of\n",
"# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n",
"# GNU Lesser General Public License for more details.\n",
"#\n",
"# You should have received a copy of the GNU Lesser General Public License\n",
"# along with this program. If not, see .\n",
"#\n",
"\n",
"# The following is derived from the slides presented by\n",
"# Alexander Kain for CS506/606 \"Special Topics: Speech Signal Processing\"\n",
"# CSLU / OHSU, Spring Term 2011.\n",
"#\n",
"# 2017/03/04 Ryan Robucci - changed plot raduis to expand to 10% beyond largest root real/imag component and and manage ticks\n",
"# 2017/03/07 Ryan Robucci - corrected code to allow for no poles, or no zeros\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import patches\n",
"from matplotlib.figure import Figure\n",
"from matplotlib import rcParams\n",
" \n",
"def zplane(b,a,filename=None):\n",
" \"\"\"Plot the complex z-plane given a transfer function.\n",
" \"\"\"\n",
"\n",
" # get a figure/plot\n",
" ax = plt.subplot(111)\n",
"\n",
" # create the unit circle\n",
" uc = patches.Circle((0,0), radius=1, fill=False,\n",
" color='black', ls='dashed')\n",
" ax.add_patch(uc)\n",
"\n",
" # The coefficients are less than 1, normalize the coeficients\n",
" if np.max(b) > 1:\n",
" kn = np.max(b)\n",
" b = b/float(kn)\n",
" else:\n",
" kn = 1\n",
"\n",
" if np.max(a) > 1:\n",
" kd = np.max(a)\n",
" a = a/float(kd)\n",
" else:\n",
" kd = 1\n",
" \n",
" # Get the poles and zeros\n",
" p = np.roots(a)\n",
" z = np.roots(b)\n",
" k = kn/float(kd)\n",
" \n",
" # Plot the zeros and set marker properties \n",
" t1 = plt.plot(z.real, z.imag, 'go', ms=10)\n",
" plt.setp( t1, markersize=10.0, markeredgewidth=1.0,\n",
" markeredgecolor='k', markerfacecolor='g')\n",
"\n",
" # Plot the poles and set marker properties\n",
" t2 = plt.plot(p.real, p.imag, 'rx', ms=10)\n",
" plt.setp( t2, markersize=12.0, markeredgewidth=3.0,\n",
" markeredgecolor='r', markerfacecolor='r')\n",
"\n",
" ax.spines['left'].set_position('center')\n",
" ax.spines['bottom'].set_position('center')\n",
" ax.spines['right'].set_visible(False)\n",
" ax.spines['top'].set_visible(False)\n",
"\n",
" # set the ticks\n",
" #RWR: the following has been modified to fit larger-magnitude roots and manage ticks\n",
" r = 1.1*np.abs(np.concatenate(([1.5/1.1],p.real,p.imag,z.real,z.imag))).max(); \n",
" plt.axis('scaled');\n",
" if r<1.6:\n",
" ticks = [-1, -.5, .5, 1]; \n",
" elif r<5:\n",
" ticks = [-2,-1, -.5, .5, 1,2]; \n",
" elif r<10:\n",
" ticks = [-5,-2,-1,1,2,5]; \n",
" elif r<20:\n",
" ticks = [-10,-1,1,10]; \n",
" else:\n",
" rlog = np.ceil(np.log10(r))\n",
" ticks = np.arange(-(10**rlog),(10**rlog)+1,10**(rlog-1)*2); \n",
" \n",
" plt.xticks(ticks);\n",
" plt.yticks(ticks)\n",
" plt.axis([-r, r, -r, r])\n",
"\n",
" if filename is None:\n",
" plt.show()\n",
" else:\n",
" plt.savefig(filename)\n",
" \n",
"\n",
" return z, p, k"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"# z^-1 + z^-2 \n",
"# H(z)= --------------------\n",
"# 1+.25z^-1-.375z^-2\n",
"b = np.array([0, 1, 1])\n",
"a = np.array([1, 1/4., -3/8.])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Variable Type Data/Info\n",
"--------------------------------\n",
"Figure type \n",
"a ndarray 3: 3 elems, type `float64`, 24 bytes\n",
"b ndarray 3: 3 elems, type `int64`, 24 bytes\n",
"np module kages/numpy/__init__.py'>\n",
"patches module s/matplotlib/patches.py'>\n",
"plt module es/matplotlib/pyplot.py'>\n",
"rcParams RcParams _internal.classic_mode: F<...>: 0.6\\nytick.right: False\n",
"zplane function \n"
]
}
],
"source": [
"%whos"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"zplane(b,a)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from scipy import signal #https://docs.scipy.org/doc/scipy-0.18.1/reference/signal.html"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"w, H = signal.freqz(b,a)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"plt.subplot(211)\n",
"plt.plot(w, 20 * np.log10(np.abs(H)), 'b')\n",
"plt.ylabel('Amplitude [dB]', color='b')\n",
"plt.xlabel('Frequency [rad/sample]')\n",
"plt.grid(True)\n",
"plt.axis('tight')\n",
"plt.subplot(212)\n",
"angles = np.unwrap(np.angle(H))\n",
"plt.plot(w, angles, 'g')\n",
"plt.ylabel('Angle (radians)', color='g')\n",
"plt.xlabel('Frequency [rad/sample]')\n",
"plt.grid(True)\n",
"plt.axis('tight')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note the \"group\" or \"range\" of freqeuncies with a localized, generalized linear delay\n",
"\n",
"What group delay does it correspond to? "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"angles = np.unwrap(np.angle(H))\n",
"plt.plot(w/(2*np.pi), angles/(2*np.pi), 'g')\n",
"plt.ylabel(r'Nomralized Angle $\\left(\\frac{\\theta}{2\\pi}\\right)$,(cycle)', color='g')\n",
"plt.xlabel('Normalized Frequency [cycles/sample]')\n",
"plt.grid(True)\n",
"plt.axis('tight')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"b=np.array([1,2,2,1])\n",
"a=np.array([1])\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"#The impz function from matlab seems to be missing, so in the next part we create an impulse and filter it to get the response\n",
"#import pylab\n",
"#h = pylab.impz(b,a) #this was missing\n",
"\n",
"#tf = signal.dlti(b,a)\n",
"#[n,h] = signal.dimpulse(tf) #https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.signal.dimpulse.html\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def delta(pos,len):\n",
" x = np.zeros(len)\n",
" x[pos] = 1.0\n",
" return x\n",
"\n",
"imp = delta(0,100)\n",
"plt.stem(imp)\n",
"plt.show()\n",
"h_ = signal.lfilter(b,a,imp)\n",
"plt.stem(h_)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$\\mathcal{Z}^{-1}\\big\\{1+z^-1+z^-2+z^-3\\big\\}= \\delta[n]+ 2\\delta[n-1] + 2\\delta[n-2] + \\delta[n-3]$"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"P: []\n",
"Z: [-1. +0.j -0.5+0.8660254j -0.5-0.8660254j]\n",
"G: 1.0\n",
"b: [1. 2. 2. 1.]\n",
"a: [1.]\n"
]
}
],
"source": [
"[z,p,g] = signal.tf2zpk(b, a)\n",
"print('P:',p)\n",
"print('Z:',z)\n",
"print('G:',g)\n",
"[b,a] = signal.zpk2tf(z, p*10, g)\n",
"print('b:',b)\n",
"print('a:',a)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"n_ = np.arange(10000) # creates a sequence 0 to 9999\n",
"s_ = np.sin(2*np.pi*.125*n_)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(n_[0:100],s_[0:100])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"y1_ = np.convolve(s_,h_,'same') ##mode = \"full\" \"same\" \"valid\" "
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10000"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(y1_)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"y2_ = signal.lfilter(b,a,s_)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10000"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(y2_)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"markerline, stemlines, baseline = plt.stem(n_[:100],y2_[:100],label='y1') #like matlab stem\n",
"plt.setp(markerline, 'markerfacecolor', 'r','alpha',0.7,'markersize',10)\n",
"#plt.setp(baseline, 'color','r', 'linewidth', 2)\n",
"markerline, stemlines, baseline = plt.stem(n_[:100],y2_[:100],label='y2')\n",
"plt.setp(markerline, 'markerfacecolor', 'g','alpha',0.7)\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"S = np.fft.fft(s_) # https://docs.scipy.org/doc/numpy/reference/routines.fft.html\n",
"Y = np.fft.fft(y2_)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"omega = 2 * np.pi * np.arange(len(S))/len(S)\n",
"plt.plot(omega,np.abs(S), label = 'S',linewidth=3,alpha=.5) # in matlab extra arguments are 'DisplayName','S'\n",
"plt.plot(omega,np.abs(Y), label = 'Y',linewidth=3,alpha=.5,color='r')\n",
"plt.legend()\n",
"plt.axis('tight')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we rerun the magnitude plot earlier to verify that the gain at the input frequency is a little above $4\\times$ "
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"w,H = signal.freqz(b,a)\n",
"import matplotlib.pyplot as plt\n",
"plt.subplot(211)\n",
"plt.plot(w, 20 * np.log10(np.abs(H)), 'b')\n",
"plt.ylabel('Amplitude [dB]', color='b')\n",
"plt.xlabel('Frequency [rad/sample]')\n",
"plt.grid(True)\n",
"plt.axis('tight')\n",
"plt.subplot(212)\n",
"angles = np.unwrap(np.angle(H))\n",
"plt.plot(w, angles, 'g')\n",
"plt.ylabel('Angle (radians)', color='g')\n",
"plt.xlabel('Frequency [rad/sample]')\n",
"plt.grid(True)\n",
"plt.axis('tight')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note the linear phase this time"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10000"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(omega)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10000"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(S)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10000"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(y2_)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"#Here, I will use correlation to find the lag of the output signal from the response\n",
"#this is valid since I am correlating two signals that are very long compared to the lag range I will examine, otherwise I would have to consider bias\n",
"a = np.correlate(s_-np.mean(s_), y2_-np.mean(y2_), mode='full') #mode = \"full\" \"same\" \"valid\" \n",
"lags = np.arange(-(len(y2_)),len(s_))"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ind = np.where((lags<10) & (lags>-10)) #matlab find\n",
"plt.stem(lags[ind],a[ind])\n",
"plt.xlabel('lag')\n",
"plt.grid(True)\n",
"plt.xticks([0,1,2,3,4,5,6,7,8,9,10])\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We expect a 1.5 sample delay, based on the center of mass of the impulse response or the derivative of the phase response "
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"n_ = np.arange(1e6)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"carrier_ = np.sin(2*np.pi*.125*n_)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"baseband_ = np.sin(2*np.pi*.125/100*n_)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"transmit_ = carrier_*baseband_"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"import scipy as sp"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"#ignore: mod_ = np.diff(sp.special.erf(n_/1e6))"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"plt.plot(transmit_[0:1000])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"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.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}