{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"TODO:\n",
"\n",
"\n",
"R1\n",
"-\tget the Nyquist plot axis dimensions issue when $k=1$ fixed\n",
"-\tfigure out the failing of .pz with active elements\n",
"\n",
"\n",
"R2\n",
"-\tmake the frequency analysis stuff happen\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: KICAD_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched.\n"
]
}
],
"source": [
"from skidl.pyspice import *\n",
"#can you say cheeky \n",
"import PySpice as pspice\n",
"#becouse it's written by a kiwi you know\n",
"import lcapy as kiwi\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import sympy as sym\n",
"\n",
"from scipy.signal import zpk2tf as scipy_zpk2tf\n",
"\n",
"\n",
"from IPython.display import YouTubeVideo, display\n",
"\n",
"import traceback\n",
"import warnings"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"application/json": {
"Software versions": [
{
"module": "Python",
"version": "3.7.6 64bit [GCC 7.3.0]"
},
{
"module": "IPython",
"version": "7.12.0"
},
{
"module": "OS",
"version": "Linux 4.19.104 microsoft standard x86_64 with debian bullseye sid"
},
{
"module": "skidl",
"version": "0.0.31.dev0"
},
{
"module": "PySpice",
"version": "1.4.3"
},
{
"module": "lcapy",
"version": "0.75.dev0"
},
{
"module": "sympy",
"version": "1.6.2"
},
{
"module": "numpy",
"version": "1.18.1"
},
{
"module": "matplotlib",
"version": "3.3.0"
},
{
"module": "pandas",
"version": "1.1.4"
},
{
"module": "scipy",
"version": "1.4.1"
}
]
},
"text/html": [
"
Software
Version
Python
3.7.6 64bit [GCC 7.3.0]
IPython
7.12.0
OS
Linux 4.19.104 microsoft standard x86_64 with debian bullseye sid
skidl
0.0.31.dev0
PySpice
1.4.3
lcapy
0.75.dev0
sympy
1.6.2
numpy
1.18.1
matplotlib
3.3.0
pandas
1.1.4
scipy
1.4.1
Mon Jan 18 15:33:46 2021 MST
"
],
"text/latex": [
"\\begin{tabular}{|l|l|}\\hline\n",
"{\\bf Software} & {\\bf Version} \\\\ \\hline\\hline\n",
"Python & 3.7.6 64bit [GCC 7.3.0] \\\\ \\hline\n",
"IPython & 7.12.0 \\\\ \\hline\n",
"OS & Linux 4.19.104 microsoft standard x86\\_64 with debian bullseye sid \\\\ \\hline\n",
"skidl & 0.0.31.dev0 \\\\ \\hline\n",
"PySpice & 1.4.3 \\\\ \\hline\n",
"lcapy & 0.75.dev0 \\\\ \\hline\n",
"sympy & 1.6.2 \\\\ \\hline\n",
"numpy & 1.18.1 \\\\ \\hline\n",
"matplotlib & 3.3.0 \\\\ \\hline\n",
"pandas & 1.1.4 \\\\ \\hline\n",
"scipy & 1.4.1 \\\\ \\hline\n",
"\\hline \\multicolumn{2}{|l|}{Mon Jan 18 15:33:46 2021 MST} \\\\ \\hline\n",
"\\end{tabular}\n"
],
"text/plain": [
"Software versions\n",
"Python 3.7.6 64bit [GCC 7.3.0]\n",
"IPython 7.12.0\n",
"OS Linux 4.19.104 microsoft standard x86_64 with debian bullseye sid\n",
"skidl 0.0.31.dev0\n",
"PySpice 1.4.3\n",
"lcapy 0.75.dev0\n",
"sympy 1.6.2\n",
"numpy 1.18.1\n",
"matplotlib 3.3.0\n",
"pandas 1.1.4\n",
"scipy 1.4.1\n",
"Mon Jan 18 15:33:46 2021 MST"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#import dc code from parral folder\n",
"import sys\n",
"sys.path.insert(1, '../DC_1/')\n",
"from DC_1_Codes import get_skidl_spice_ref, easy_tf\n",
"\n",
"from AC_2_Codes import *\n",
"\n",
"sym.init_printing()\n",
"\n",
"#notebook specific loading control statements \n",
"%matplotlib inline\n",
"#tool to log notebook internals\n",
"#https://github.com/jrjohansson/version_information\n",
"%load_ext version_information\n",
"%version_information skidl, PySpice,lcapy, sympy, numpy, matplotlib, pandas, scipy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# What is PZ anylsis\n",
"\n",
"Pole-Zero analysis (.pz)does exactly what it says it does. It analysis the circuit between two ports and will return all the poles and or zero between the ports and that's it. That means with the resulting poles and zeros we can reconstruct the transfer function between the ports up to the gain term that is $$H(s)_{true}\\propto \\dfrac{\\prod_n (s-a_n)}{\\prod_m (s-b_m)}$$ where $a_n$ are the zeros and $b_n$ are the poles. Again this can't be stressed enough .pz does not recover the \"gain\" term $K$ that would turn the proportionality into an equality.\n",
"\n",
"So what use is it? While that depends on what stage of the design cycle you're in and what is being analyzed. So for RLC elements, it's just going to tell us the poles and zeros where we know that the poles and zero do not move. But for active devices such as BJTs, FETs, etc we could cycle the .pz analysis and see how the .pz locations move with the bias. And while .pz is limited from a verification standpoint seeing as it will just confirm the pole-zero locations that should have been set in the design stage it can be of use when performing reverse engineering on an unknown circuit. Further during the design stage or when analyzing an unknown circuit the lack of $K$ is not a total handicap. Since even without $K$ we can perform root-locus analysis or we can sweep $K$ while comparing the resulting transfer function response to an .ac simulation to then determine $K$ when reverse engineering an unknown design.\n",
"\n",
"So then let's go ahead and start looking at .pz and what we can do with that data.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PZ analysis of an RC lowpass filter\n",
"\n",
"For this first use case, we will use the RC lowpass filter that we developed in the last section bassed on the work of ALL ABOUT ELECTRONICS"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n"
},
"metadata": {
"image/png": {
"height": 150,
"width": 442
}
},
"output_type": "display_data"
}
],
"source": [
"#instatate the rc_lowpass filter to \n",
"lowpassF=rc_lowpass(C_value=.1@u_uF, R_value=1@u_kOhm)\n",
"lowpassF.lcapy_self()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets then get the voltage transfer function for this filter topology"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$$\\frac{1}{C R \\left(s + \\frac{1}{C R}\\right)}$$"
],
"text/plain": [
" 1 \n",
"─────────────\n",
" ⎛ 1 ⎞\n",
"C⋅R⋅⎜s + ───⎟\n",
" ⎝ C⋅R⎠"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H_rcl_gen=lowpassF.get_tf(with_values=False); H_rcl_gen"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The voltage transfer function for this topology shows that it has a single pole and the following gain term $K$"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$$\\frac{1}{C R}$$"
],
"text/plain": [
" 1 \n",
"───\n",
"C⋅R"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H_rcl_gen.K"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Real quickly how lcapy is getting the full voltage-transfer function is based on\n",
"\n",
"1.\tGenerating the symbolic Modified nodal analysis in the Laplace domain\n",
"\n",
"2.\textracting the so-called Two-Port admittance parameters $Y$ from the Modified nodal analysis matrix\n",
"\n",
"3.\tfinding the port 1 to port 2 voltage transfer function via $$H_v(s)=\\dfrac{Y_{21}}{Y_{22}}$$ Which is just one way of doing it. Where more on two-port network theory and SPICE acquisition will be shown in the remaining sections of this chapter.\n",
"\n",
"Lets now get the transfer function for this instinacs of the rc lowpass topology and isolate its $K$ term\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$$\\frac{10000}{s + 10000}$$"
],
"text/plain": [
" 10000 \n",
"─────────\n",
"s + 10000"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H_rcl=lowpassF.get_tf(with_values=True, ZPK=True); H_rcl"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAFQAAAASCAYAAADFavmwAAAB2klEQVR4nO3Xva9MURQF8N8IDXkekYiCIBPvvU6H0KBA+Qqlf0AkRKJQSAyJmkSi1KAWreYVQvwHeD4yEqEhviUaFOdMMm7mvHHOve40s5LJnnv3XWudu+/Jyd6dXq9niuawqnJ9HNfxAF/wG7fHaGzFTbzFT/RxDRsnzCnxqO29unJ9AbvxDW+wMMaoi0fYjHt4ij04g2M4gA8T4JR4NPKO1R16FnNYj5P/YHYjGp3GIs7jMK5iHlcmxCnxaOQdOyucoQexhDs4MSLfxQth+3fxayg3g3foxMV8b5FT4pFCtlZ1h+bgUIz3K0bwFQ+xFvta5pR4pJCtVaeg8zEuJ/LPY5xrmVPikUK2Vp2Czsb4OZEf3N/QMqfEI4VsrToFnWIE6hR08HVmE/nB/U8tc0o8UsjWqlPQZzGmzqJdMQ6fP21wSjxSyNaqU9ClGI+M0JkRGt4feNwyp8QjhWytOgV9KbQTO3CqkruEdbjl716vDU6JB6HPXMCaOuutNvaL8QdbcBSvhNke3uNcZRHDY9kT7BX6t2XsN36M/B+cEo8+tmNn/F+kVS1oDxel8Vr4WsPYhsvCXLtJmB7uCl/wY0KnDU7u832jC5qltdLoOUUBpn1ow5gWtGH8AbBL/raEj4aAAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle 10000.0$"
],
"text/plain": [
"10000.0"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#K should always be real or where in trouble\n",
"K_rcl=np.real(H_rcl.K.cval); K_rcl"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As with any SPICE simulation we have to instantiate our DUT in a circuit. However unlike DC's .tf we do not actually have to have any supplies but since we are also going be comparing the .ac simulation to what .pz we need a full circuit with a source to perform the .ac simulation"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
".title \n",
"V1 In 0 DC 5V AC 1V 0.0rad SIN(0V 1V 50Hz 0s 0Hz)\n",
"C1 Out 0 0.1uF\n",
"R1 In Out 1kOhm\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"No errors or warnings found during netlist generation.\n",
"\n"
]
}
],
"source": [
"reset()\n",
"#create the nets\n",
"net_in=Net('In'); net_out=Net('Out'); \n",
"\n",
"#create a 1V AC test source and attache to nets\n",
"vs=SINEV(ac_magnitude=1@u_V, dc_offset=5@u_V); vs['p', 'n']+=net_in, gnd\n",
"\n",
"#attaceh term_0 to net_in and term_2 to net_out per scikit-rf convention all \n",
"#other terminals are grounded\n",
"lowpassF.SKiDl(net_in, gnd, net_out, gnd)\n",
"\n",
"circ=generate_netlist()\n",
"print(circ)\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#this is the full filter tf response in comparison to the .ac sim\n",
"filter_responce.symbolic_tf(lowpassF)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## .tf does not get $K$\n",
"\n",
"Lets be clear about this .tf will not yield $K$ in the generic case. It might get lucky but recalling that in DC simulations capcitors are treated as non existing elements there is no way that .tf will recover the $K$ for this topology where $K=\\dfrac{1}{RC}$\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"tf=easy_tf(circ)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
loc
\n",
"
value
\n",
"
units
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Output_resistance
\n",
"
(Out-0)
\n",
"
1000
\n",
"
[Ohm]
\n",
"
\n",
"
\n",
"
Input_resistance
\n",
"
V1
\n",
"
1e+20
\n",
"
[Ohm]
\n",
"
\n",
"
\n",
"
DC_Vgain
\n",
"
(Out-0)/V1
\n",
"
1
\n",
"
[V/V]
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" loc value units\n",
"Output_resistance (Out-0) 1000 [Ohm]\n",
"Input_resistance V1 1e+20 [Ohm]\n",
"DC_Vgain (Out-0)/V1 1 [V/V]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tf.dc_voltage_gain(vs, node(net_out), node(gnd))\n",
"tf.vg_results"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PZ ease\n",
"\n",
"The following class like the rest in this book makes using the SPICE analysis easier and enhance it with the power of Python. But real quick let's look at the ngspice call for .pz (typically found in chapter 15 section 3)\n",
"\n",
"```\n",
".pz node1 node2 node3 node4 \n",
"```\n",
"\n",
"This differs from .tf in DC analysis where we had to specify a source for the input, where instead the input port terminals are specified by `node1` & `node2` which are the positive and negative terminals respectively. And similarly, the output port terminals are specified by `node3` & `node4`. Since .pz only requires the specification of the terminals to define the two-port network we can take advantage of this to look just at sat the feedback (aka $\\beta$) network in circuits containing feedback structures.\n",
"\n",
"Following the node arguments are the transfer type argument where if `vol` is used we are acquiring the poles and or zeros of voltage transfer function \n",
"\n",
"$$H_v(s)=\\dfrac{V_o}{V_i}$$\n",
"\n",
"else, if `cur` is used we are acquiring the Transimpedance (aka Transfer Impedance) \n",
"$$H_F(s)=\\dfrac{V_o}{I_i}$$\n",
", were again when using .pz we are only acquiring the poles and or zeros that make up the respective transfer function not the transfer function as a whole.\n",
"\n",
"Finlay the last argument `analysis_type` controls what we are acquiring from the .pz analysis. While typically we leave it as `pz` to get both the poles and zeros there are times it might not be possible to get both or the poles and zero have to be acquired separately. Where in that case we can use `pol` to get just the poles and `zer` to get just the zeros\n",
"\n",
"Below the class, `pz_ease` is designed to perform the .pz analysis with additional methods to analyze the results. And in both it's instantiation and in serval of its methods, the value of $K$ can be feed into it if known.\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"code_folding": [
1,
25,
66,
96,
178,
201,
245,
287,
387,
428,
498,
528
]
},
"outputs": [],
"source": [
"#%%writefile -a AC_2_Codes.py\n",
"#chapteer 2 section 4 pz_ease class\n",
"#class to perform .pz simulations with a bit more grace \n",
"#with some additional built-in analysis tools\n",
"\n",
"class pz_ease(ac_representation_tool, eecomplex_plot_templets):\n",
" def __init__(self, circ_netlist_obj, K=1.0):\n",
" \"\"\"\n",
" Class to perform Pole Zero (.pz) SPICE simulation with grace\n",
" \n",
" Args:\n",
" circ_netlist_obj (pyspice.Spice.Netlist.Circuit): the Netlist circuit produced \n",
" from SKiDl's `generate_netlist()`\n",
" \n",
" K (float/int; 1): the gain; must be manually put in or found from .tf analysis\n",
" \n",
" Returns: \n",
" \n",
" \"\"\"\n",
" self.circ_netlist_obj=circ_netlist_obj\n",
" \n",
" assert (type(K)==float) or (type(K)==int), 'K must be a float or int'\n",
" self.K=K\n",
" \n",
" \n",
" #dic of allowed pz control statements\n",
" self.allowed_control_statments={'voltage':'vol', 'current':'cur',\n",
" 'pole-zero':'pz', 'zeros':'zer', 'poles':'pol'}\n",
"\n",
" \n",
" def pz_def_ports(self, port_0_pos_term, port_0_neg_term, port_1_pos_term, port_1_neg_term, display_table=False):\n",
" \"\"\"\n",
" Method to set the Port terminals for the two-port section of the circuit under test\n",
" where all inputs must be nodes in the circuit under test\n",
" \n",
" Terminals:\n",
" port_0_pos_term, port_0_neg_term, port_1_pos_term, port_1_neg_term\n",
" \n",
" Port & Terminals are defined via:\n",
" ```\n",
" Left_Port - Two-Port Section under Test - Right_Port\n",
" +-------------+ \n",
" Postive Port0 port_0_pos_term-| DUT Section |-port_1_pos_term Postive Port1\n",
" Negtive Port0 port_0_neg_term-| |-port_1_neg_term Negtive Port1\n",
" +-------------+\n",
" ```\n",
" Args:\n",
" display_table (bool; False): when true will display the generated `self.control_df` below\n",
" this method call in a jupyter notebook like environment\n",
" \n",
" \n",
" Returns:\n",
" Settings are recoded in `self.control_df` rows: `'port_0_terms+-'` & `'port_1_terms+-'`\n",
" \"\"\"\n",
" \n",
" assert port_0_pos_term in self.circ_netlist_obj.node_names, f'`{port_0_pos_term}` is not a node in the circuit under test'\n",
" self.port_0_pos_term=port_0_pos_term\n",
" \n",
" assert port_0_neg_term in self.circ_netlist_obj.node_names, f'`{port_0_neg_term}` is not a node in the circuit under test'\n",
" self.port_0_neg_term=port_0_neg_term\n",
" \n",
" assert port_1_pos_term in self.circ_netlist_obj.node_names, f'`{port_1_pos_term}` is not a node in the circuit under test'\n",
" self.port_1_pos_term=port_1_pos_term\n",
" \n",
" assert port_1_neg_term in self.circ_netlist_obj.node_names, f'`{port_1_neg_term}` is not a node in the circuit under test'\n",
" self.port_1_neg_term=port_1_neg_term\n",
" \n",
" #record the results in table\n",
" self._build_control_table(display_table)\n",
" \n",
" \n",
" def pz_mode_set(self, tf_type='voltage', pz_acu='pole-zero', display_table=False):\n",
" \"\"\"\n",
" Method to set the pole-zero analysis controls\n",
" \n",
" Args:\n",
" tf_type (str; 'voltage'): the tf for wich the poles and zeros fit to\n",
" if `voltage` the tf is of the form V_o/V_i else if `current` in the form of\n",
" V_o/I_i\n",
" \n",
" pz_acu (str; 'pole-zero'): if `pole-zero` will attempt to get all the poles and zeros for the\n",
" specfied transfer function; else if `zeros` or `poles` will get just the respective zeros\n",
" or poles \n",
" \n",
" display_table (bool; False): when true will display the generated `self.control_df` below\n",
" this method call in a jupyter notebook like environment\n",
" \n",
" Returns:\n",
" Settings are recoded in `self.control_df` rows: `'tf_type'` & `'acqui_mode'`\n",
" \n",
" \n",
" \"\"\"\n",
" assert tf_type in self.allowed_control_statments.keys(), f'`{tf_type}` is not `voltage` or `current`'\n",
" self.tf_type=tf_type\n",
" \n",
" assert pz_acu in self.allowed_control_statments.keys(), f'`{pz_acu}` is not `pole-zero` or `poles` or `zeros`'\n",
" self.pz_acu=pz_acu\n",
" \n",
" #record the results in table\n",
" self._build_control_table(display_table)\n",
" \n",
" def _build_control_table(self, display_table=True):\n",
" \"\"\"\n",
" Internal method to build a pz control table to display pz simulation settings\n",
" \n",
" Args:\n",
" display_table (bool; True): when true will display the generated `self.control_df` below\n",
" this method call in a jupyter notebook like environment\n",
" \n",
" Returns:\n",
" creates dataframe table `self.control_df` that records pz simulation controls\n",
" if `display_table` is true will force showing under jupyter notebook cell\n",
" \n",
" \"\"\"\n",
" \n",
" self.control_df=pd.DataFrame(columns=['value'], \n",
" index=['tf_type', \n",
" 'acqui_mode',\n",
" 'port_0_terms+-',\n",
" 'port_1_terms+-'\n",
" ])\n",
" if hasattr(self, 'tf_type'):\n",
" self.control_df.at['tf_type']=self.tf_type\n",
" \n",
" if hasattr(self, 'pz_acu'):\n",
" self.control_df.at['acqui_mode']=self.pz_acu\n",
" \n",
" if hasattr(self, 'port_0_pos_term') and hasattr(self, 'port_0_neg_term') :\n",
" self.control_df.at['port_0_terms+-', 'value']=[self.port_0_pos_term, self.port_0_neg_term]\n",
" \n",
" if hasattr(self, 'port_1_pos_term') and hasattr(self, 'port_1_neg_term') :\n",
" self.control_df.at['port_1_terms+-', 'value']=[self.port_1_pos_term, self.port_1_neg_term]\n",
" \n",
" self.control_df.index.name='pz_sim_control'\n",
" \n",
" if display_table:\n",
" display(self.control_df)\n",
" \n",
" \n",
" def do_pz_sim(self, display_table=False):\n",
" \"\"\"\n",
" Method to perform the pole-zero simulation based on values stored in self.control_df\n",
" If the simulation does not converge will give a warning with a basic debug action\n",
" but will set `self.pz_values` to empty dict.\n",
" \n",
" TODO:\n",
" - add simulation kwargs\n",
" - flush out exception handling\n",
" \"\"\"\n",
" \n",
" attriputs_to_check=['port_0_pos_term', 'port_0_neg_term', 'port_1_pos_term', 'port_1_neg_term', \n",
" 'tf_type', 'pz_acu']\n",
" \n",
" for i in attriputs_to_check:\n",
" if hasattr(self, i):\n",
" pz_is_go=True\n",
" else:\n",
" pz_is_go=False\n",
" warnings.warn(f'{i} has not been set; pole-zero simulation will not procdede till set')\n",
" \n",
" if pz_is_go:\n",
" self.sim=self.circ_netlist_obj.simulator()\n",
" #I cant catch the warning when it hangs so going to have to do this\n",
" self.pz_values={}\n",
"\n",
" try:\n",
" self.pz_values=self.sim.polezero(\n",
" node1=self.port_0_pos_term, \n",
" node2=self.port_0_neg_term, \n",
" node3=self.port_1_pos_term, \n",
" node4=self.port_1_neg_term, \n",
" tf_type=self.allowed_control_statments[self.tf_type], \n",
" pz_type=self.allowed_control_statments[self.pz_acu]\n",
" )\n",
" \n",
" self._record_pz_results(display_table)\n",
" \n",
" except pspice.Spice.NgSpice.Shared.NgSpiceCommandError:\n",
" self.pz_values={}\n",
" warnings.warn(\"\"\"PZ analysis did not converge with the current setting:\n",
" start by changing the tf type (self.tf_type) and pz acusisiton type (self.pz_acu) \"\"\")\n",
" \n",
" \n",
" def _record_pz_results(self, display_table=True):\n",
" \"\"\"\n",
" Internal method to record the PZ results to a dataframe\n",
" \n",
" Args:\n",
" display_table (bool; True): when true will display the generated `self.control_df` below\n",
" this method call in a jupyter notebook like environment\n",
" \n",
" Returns:\n",
" creates dataframe table `self.pz_results_DF` that records pz simulation results\n",
" if `display_table` is true will force showing under jupyter notebook cell\n",
" \n",
" \"\"\"\n",
" self.pz_results_DF=pd.DataFrame(columns=['Type', 'Values'])\n",
" \n",
" if hasattr(self.pz_values, 'nodes'):\n",
" for k, v in self.pz_values.nodes.items():\n",
" self.pz_results_DF.at[len(self.pz_results_DF)]=k, v.as_ndarray()[0]\n",
" \n",
" if display_table:\n",
" display(self.pz_results_DF)\n",
" \n",
" \n",
" def get_pz_sym_tf(self, dec_round=None, overload_K=None):\n",
" \"\"\"\n",
" Method to get the symbolic transfer function via lacpy\n",
" \n",
" Args:\n",
" dec_round (int; None): contorl to `np.around`'s `decimals` argument\n",
" if left `None` np.around will not be used\n",
" \n",
" overload_K (float/int; None): if not `None` will overload the DC\n",
" gain constant stored in `self.K`\n",
" \n",
" Returns:\n",
" if `self.pz_results_DF` exists return the symbolic transfer function in the s\n",
" dominan in `self.sym_tf`\n",
" \"\"\"\n",
" if overload_K!=None:\n",
" assert (type(overload_K)==float) or (type(overload_K)==int), 'K must be a float or int'\n",
" self.K=overload_K\n",
" \n",
" if hasattr(self, 'pz_results_DF')!=True:\n",
" warnings.warn('no poles/zero recorded run `self.do_pz_sim`')\n",
" else:\n",
" zeros_B=np.empty(0)\n",
" poles_A=np.empty(0)\n",
" for index, row in self.pz_results_DF.iterrows():\n",
" if 'zero' in row['Type']:\n",
" zeros_B=np.hstack((zeros_B, row['Values']))\n",
" elif 'pole' in row['Type']:\n",
" poles_A=np.hstack((poles_A, row['Values']))\n",
" \n",
" if dec_round!=None:\n",
" zeros_B=np.around(zeros_B, dec_round)\n",
" poles_A=np.around(poles_A, dec_round)\n",
" \n",
" self.zeros_B=zeros_B; self.poles_A=poles_A\n",
" #wish I didn't have to do this\n",
" zeros_B=zeros_B.tolist(); poles_A=poles_A.tolist() \n",
" \n",
" #use lcapy to get the symbolic tf \n",
" self.sym_tf=kiwi.zp2tf(zeros_B, poles_A, K=self.K)\n",
" #use simplify because if in pzk it does weird things with j that\n",
" #lambdfy has issues with\n",
" self.sym_tf=self.sym_tf.simplify()\n",
" \n",
" def plot_pz_loc(self, ax=None, title='', unitcircle=False):\n",
" \"\"\"\n",
" uses lcapy's `plot_pole_zero` in https://github.com/mph-/lcapy/blob/6e42983d6b77954e694057d61045bd73d17b4616/lcapy/plot.py#L12\n",
" to plot the poles and zero locations on a Nyquist chart\n",
" \n",
" Args:\n",
" axs (list of matplotlib axis; None): If left None will create a new plot, else must \n",
" be a list of matplotlib subplots axis to be added to where the first entry\n",
" will be the magnitude axis, and the second will be the phase axis\n",
" \n",
" title (str; ''): Subplot title string\n",
" \n",
" unitcircle (bool; False): when True will plot the unit circle on the resulting plot\n",
" \n",
" Returns:\n",
" Returns a real-imag with Poles and Zero map, and if an axis was passed to `ax` will be modified\n",
" with the pole-zero map\n",
" \n",
" \n",
" \"\"\"\n",
" axs=ax or plt.gca()\n",
" if hasattr(self, 'sym_tf')==False:\n",
" warnings.warn(\"\"\"Trying to get symbolic transfer function from `self.get_pz_sym_tf`\n",
" thus you will get what you get\"\"\")\n",
" self.get_pz_sym_tf()\n",
" \n",
" self.sym_tf.plot(axes=axs, unitcircle=unitcircle, \n",
" #wish there be a better way to do this\n",
" label=\"'X'=pole; 'O'=zero\")\n",
" \n",
" axs.axhline(0, linestyle='--', linewidth=2.0, color='black')\n",
" axs.axvline(0, linestyle='--', linewidth=2.0, color='black')\n",
" axs.set_xlabel('Real'); axs.set_ylabel('Imag')\n",
" \n",
" axs.legend()\n",
" \n",
" if title!='':\n",
" title=' of '+title\n",
" axs.set_title(f'Pole-Zero locations plot{title}');\n",
"\n",
" \n",
" \n",
" def plot_3d_laplce(self, title=''):\n",
" \"\"\"\n",
" Creates 3d plots of the Laplace space of the transfer function, one for the mag\n",
" the other for the phase in degrees unwrapped\n",
" \n",
" Args:\n",
" title (str; ''): Subplot title string\n",
" \n",
" Returns:\n",
" returns a 3d plot with the left subplot being the mag and the right being the phase\n",
" \n",
" TODO:\n",
" - get the freaking color bar into a clean location when working with 3d plots\n",
" - merge phase as color into mag see the physics video by eugene on Laplace \n",
" \"\"\"\n",
" if hasattr(self, 'sym_tf')==False:\n",
" warnings.warn(\"\"\"Trying to get symbolic transfer function from `self.get_pz_sym_tf`\n",
" thus you will get what you get\"\"\")\n",
" self.get_pz_sym_tf()\n",
" \n",
" #import the additnal matplotlib featuers for 3d\n",
" from mpl_toolkits.mplot3d import Axes3D\n",
" from matplotlib import cm\n",
" \n",
" #stole this off lcapy's plot_pole_zero\n",
" #https://github.com/mph-/lcapy/blob/7c4225f2159aa33398dac481041ed538169b7058/lcapy/plot.py\n",
" \n",
" \n",
" #check self.sys_tf is good to be used\n",
" sys_tf_syms=self.sym_tf.symbols\n",
" assert len(sys_tf_syms)==1 and ('s' in sys_tf_syms.keys()), 'trasfer function must be laplce form and only have `s` as a free symbol'\n",
"\n",
" #lambdfy the tf\n",
" sys_tf_lam=sym.lambdify(kiwi.s, self.sym_tf.canonical(), 'numpy', dummify=False)\n",
"\n",
" #get the plot bounds\n",
" #stole this off lcapy's plot_pole_zero\n",
" #https://github.com/mph-/lcapy/blob/7c4225f2159aa33398dac481041ed538169b7058/lcapy/plot.py\n",
"\n",
" poles = self.sym_tf.poles()\n",
" zeros = self.sym_tf.zeros()\n",
" try:\n",
" p = np.array([p.cval for p in poles.keys()])\n",
" z = np.array([z.cval for z in zeros.keys()])\n",
" except ValueError:\n",
" raise TypeError('Cannot get poles and zeros of `self.sym_tf')\n",
" a = np.hstack((p, z))\n",
" x_min = a.real.min()\n",
" x_max = a.real.max()\n",
" y_min = a.imag.min()\n",
" y_max = a.imag.max()\n",
"\n",
" x_extra, y_extra = 3.0, 3.0\n",
"\n",
" # This needs tweaking for better bounds.\n",
" if len(a) >= 2:\n",
" x_extra, y_extra = 0.1 * (x_max - x_min), 0.1 * (y_max - y_min)\n",
" if x_extra == 0:\n",
" x_extra += 1.0\n",
" if y_extra == 0:\n",
" y_extra += 1.0\n",
"\n",
" x_min -= 0.5 * x_extra\n",
" x_max += 0.5 * x_extra\n",
" y_min -= 0.5 * y_extra\n",
" y_max += 0.5 * y_extra\n",
"\n",
" #the input domain\n",
" RealRange=np.linspace(x_min, x_max, 100); ImagRange=np.linspace(y_min, y_max, 100)\n",
" sr, si=np.meshgrid(RealRange, ImagRange)\n",
" s_num=sr+1j*si\n",
"\n",
" #plot this\n",
" fig = plt.figure()\n",
" \n",
" #mag 3d plot\n",
" ax3d_mag = fig.add_subplot(121, projection='3d')\n",
"\n",
" XmagPlot=ax3d_mag.plot_surface(sr, si, np.abs(sys_tf_lam(s_num)), alpha=0.5,\n",
" cmap=cm.coolwarm, antialiased=False)\n",
" ax3d_mag.set_xlabel(r'$\\sigma$'); ax3d_mag.set_ylabel(r'$j\\omega$'), ax3d_mag.set_zlabel(r'$|X|$')\n",
" fig.colorbar(XmagPlot, shrink=0.5, aspect=5)\n",
"\n",
" #phase 3d plot\n",
" ax3d_phase = fig.add_subplot(122, projection='3d')\n",
"\n",
" XphasePlot=ax3d_phase.plot_surface(sr, si, angle_phase_unwrap(sys_tf_lam(s_num)), alpha=0.5,\n",
" cmap=cm.coolwarm, antialiased=False)\n",
" ax3d_phase.set_xlabel(r'$\\sigma$'); ax3d_phase.set_ylabel(r'$j\\omega$'), ax3d_phase.set_zlabel(r'$ang(X)$')\n",
" fig.colorbar(XphasePlot, shrink=0.5, aspect=5)\n",
"\n",
" plt.tight_layout()\n",
" \n",
" if title!='':\n",
" title=' of '+title\n",
" ax3d_mag.set_title(f'3D Mag Laplace plot{title}');\n",
" ax3d_phase.set_title(f'3D Phase_deg Laplace plot{title}');\n",
"\n",
" \n",
" \n",
" def scipy_pzk(self, dec_round=None, overload_K=None):\n",
" \"\"\"\n",
" Method to create to generate the Numerator (a) and Denominator (b)\n",
" arrays to use within the scipy signal framework see \n",
" https://docs.scipy.org/doc/scipy/reference/signal.html\n",
" &\n",
" https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.zpk2tf.html#scipy.signal.zpk2tf\n",
" \n",
" Args:\n",
" dec_round (int; None): contorl to `np.around`'s `decimals` argument\n",
" if left `None` np.around will not be used\n",
" \n",
" overload_K (float/int; None): if not `None` will overload the DC\n",
" gain constant stored in `self.K`\n",
" \n",
" Returns:\n",
" if `self.pz_results_DF` exists tries to return the coefficients for an lti\n",
" filter for use in scipy's signal library in a dictionary in `self.scipy_tfcoef`\n",
" \"\"\"\n",
" if overload_K!=None:\n",
" assert (type(overload_K)==float) or (type(overload_K)==int), 'K must be a float or int'\n",
" self.K=overload_K\n",
" \n",
" if hasattr(self, 'pz_results_DF')!=True:\n",
" warnings.warn('no poles/zero recorded run `self.do_pz_sim`')\n",
" else:\n",
" zeros_B=np.empty(0)\n",
" poles_A=np.empty(0)\n",
" for index, row in self.pz_results_DF.iterrows():\n",
" if 'zero' in row['Type']:\n",
" zeros_B=np.hstack((zeros_B, row['Values']))\n",
" elif 'pole' in row['Type']:\n",
" poles_A=np.hstack((poles_A, row['Values']))\n",
" \n",
" if dec_round!=None:\n",
" zeros_B=np.around(zeros_B, dec_round)\n",
" poles_A=np.around(poles_A, dec_round)\n",
" \n",
" b, a=scipy_zpk2tf(zeros_B, poles_A, self.K)\n",
" self.scipy_tfcoef={'b':b, 'a':a}\n",
" \n",
" def get_sym_freq_resp(self, freq_vec=None):\n",
" \"\"\"\n",
" method to get the symbolic transfer function response \n",
" \n",
" Args:\n",
" freq_vec (numpy array or pandas series; None): frequencies\n",
" to generate results from the generated symbolic transfer function\n",
" if `None` will come up with a freancy vector inside via `np.logspace(-1, 12, 12*10*10)`\n",
" \n",
" Returns:\n",
" will store frequency vector as the index in `self.pz_symresults_DF`\n",
" where the response of the symbolic transfer function will be stored\n",
" in `self.pz_symresults_DF['pzk_symres_[V]']` from there will\n",
" use the inheritance from `ac_representation_tool` to then \n",
" generate `self.ac_sim_real_DF['pzk_symres_[V]'], self.ac_sim_imag_DF['pzk_symres_[V]']`, ect\n",
" \n",
" \"\"\"\n",
" if hasattr(self, 'sym_tf')==False:\n",
" warnings.warn(\"\"\"Trying to get symbolic transfer function from `self.get_pz_sym_tf`\n",
" thus you will get what you get\"\"\")\n",
" self.get_pz_sym_tf()\n",
" \n",
" if freq_vec==None:\n",
" self.freq_vec=np.logspace(-1, 12, 12*10*10)\n",
" \n",
" self.pz_symresults_DF=pd.DataFrame(index=self.freq_vec)\n",
" self.pz_symresults_DF.index.name='freq[Hz]'\n",
" \n",
" self.pz_symresults_DF['pzk_symres_[V]']=self.sym_tf.frequency_response(self.pz_symresults_DF.index.values).astype('complex')\n",
" \n",
" ac_representation_tool.__init__(self, self.pz_symresults_DF)\n",
" \n",
" #just make the reps\n",
" self.make_real_imag()\n",
" self.make_mag_phase()\n",
" \n",
" def plot_nyquist_with_pz(self, ax=None, title='', unitcircle=False):\n",
" \"\"\"\n",
" plotting utility to plot the pole-zero location on top of a Nyquist\n",
" a plot of the response of the symbolic transfer function\n",
" \n",
" Args:\n",
" ax (matplotlib axis; None): If left None will create a new plot, else must\n",
" be a matplotlib subplot axis to be added to\n",
" \n",
" title (str; ''): Subplot title string\n",
" \n",
" Returns:\n",
" Returns a Nyquist plot with the pole-zero locations superimposed on top of, \n",
" and if an axis was passed to `ax` will be modified\n",
" \n",
" \n",
" \n",
" \"\"\"\n",
" axs=ax or plt.gca()\n",
" if hasattr(self, 'ac_sim_real_DF')==False:\n",
" warnings.warn(\"\"\"Trying to get the real imag data from `self.get_sym_freq_resp`, \n",
" you get what you get\"\"\")\n",
" self.get_sym_freq_resp()\n",
" \n",
" \n",
" self.nyquist_plot_templet(self.ac_sim_real_DF['pzk_symres_[V]'], self.ac_sim_imag_DF['pzk_symres_[V]'], \n",
" ax=axs)\n",
" self.plot_pz_loc(ax=axs, unitcircle=unitcircle)\n",
"\n",
" \n",
" if title!='':\n",
" title=' of '+title\n",
" axs.set_title(f'Nyquist with Pole-Zero locations plot{title}');\n",
" \n",
" def plot_bode_from_pz(self, ax=None, title=''):\n",
" \"\"\"\n",
" plotting utility to plot single mag and phase on a single bode plot \n",
" for the response of the symbolic transfer function\n",
" \n",
" Args:\n",
" ax (matplotlib axis; None): If left None will create a new plot, else must\n",
" be a matplotlib subplot axis to be added to\n",
" \n",
" title (str; ''): Subplot title string\n",
" \n",
" Returns:\n",
" Returns a bode plot from the symbolic transfer function, \n",
" and if an axis was passed to `ax` will be modified\n",
" \"\"\"\n",
" axs=ax or plt.gca()\n",
" if hasattr(self, 'ac_sim_real_DF')==False:\n",
" warnings.warn(\"\"\"Trying to get the mag phase data from `self.get_sym_freq_resp`, \n",
" you get what you get\"\"\")\n",
" self.get_sym_freq_resp()\n",
" \n",
" \n",
" \n",
" self.bode_plot_one_templet(self.ac_sim_mag_DF.index, self.ac_sim_mag_DF['pzk_symres_[V][dB]'], self.ac_sim_phase_DF['pzk_symres_[V][deg]'], \n",
" ax=axs)\n",
" \n",
" if title!='':\n",
" title=' of '+title\n",
" axs.set_title(f'Bode plot from Pole-Zero anylsis plot{title}');\n",
" \n",
" def plot_nichols_from_pz(self, ax=None, title=''):\n",
" \"\"\"\n",
" plotting utility to plot the Nichols chart\n",
" for the response of the symbolic transfer function\n",
" \n",
" Args:\n",
" ax (matplotlib axis; None): If left None will create a new plot, else must\n",
" be a matplotlib subplot axis to be added to\n",
" \n",
" title (str; ''): Subplot title string\n",
" \n",
" Returns:\n",
" Returns a Nichols chart plot from the symbolic transfer function, \n",
" and if an axis was passed to `ax` will be modified\n",
" \"\"\"\n",
" axs=ax or plt.gca()\n",
" \n",
" if hasattr(self, 'ac_sim_real_DF')==False:\n",
" warnings.warn(\"\"\"Trying to get the mag phase data from `self.get_sym_freq_resp`, \n",
" you get what you get\"\"\")\n",
" self.get_sym_freq_resp()\n",
" \n",
" \n",
" \n",
" self.nichols_plot_templet(self.ac_sim_mag_DF['pzk_symres_[V][dB]'], self.ac_sim_phase_DF['pzk_symres_[V][deg]'], \n",
" ax=axs)\n",
" \n",
" if title!='':\n",
" title=' of '+title\n",
" axs.set_title(f'Nichols plot from Pole-Zero anylsis plot{title}');\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To use `pz_ease` we instantiate it by passing in the circuit under test at the time of creation. The instantiation has another argument to pass in $K$ if known *a prior* if just the moment we will leave $K=1$ to demonstrate what .pz and `pz_ease` can do when $K$ is not known"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"pz=pz_ease(circ)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"next, we define the port terminals and set the control for the voltage transfer function and to get both poles and zero which is the default case."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
" Type Values\n",
"0 pole(1) (-10000+0j)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pz.do_pz_sim(display_table=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Results when $K=1$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And we see that we get the pole that we know exists with the value we expect. So now then we can feed the results into Lcapy's zp2tf to generate the symbolic transfer function. Where we will keep $K=1$ for the moment"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$$\\frac{1}{s + 10000.0}$$"
],
"text/plain": [
" 1 \n",
"───────────\n",
"s + 10000.0"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pz.get_pz_sym_tf()\n",
"H_pzk1=pz.sym_tf; H_pzk1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now plot the pole zero locations"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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rlB07dqVZcuWxR0GhYWF5OXlxR1GVlAuEpSLBOUiIRtyYWYVv6RaTkNPIiISSYVCREQiqVCIiEikWK9RmNmZBNMSNAUedPdbK2y/ChhHMGNoKTDW3VdlPFCR/dBXX31FcXExO3furL5xA2jTpg1vvfVWLH1nm0zmokWLFnTq1IlmzVLdQiS12ApFOHXyNGAYwTTFRWY2t0IheMzd7wvb5xPcAObMjAcrsh8qLi6mdevWdO3alWAS38zatm0brVu3zni/2ShTuXB3SkpKKC4uplu3bmnvF+fQ00CCG6m8G04IN5vgzlnl3H1r0uKhaGpikXqzc+dO2rVrF0uRkHiYGe3atavxWWScQ09HkXQDFIKzikozg5rZOIKZLZsDp2YmNJEDg4rEgac2v/Os/x6Fu08DppnZxQT3Kx5VsY2ZjSW4xzE5OTkUFhZmNMZUSktLsyKObKBcJGRTLtq0acO2bdvSavvuu8b06c35618PoqTEaNfOGT58D2PH7uboo2t3ov+f//wn7f73d5nOxc6dO2v27zCue7AS3K94QdLyZGByRPsmwJbqjnvCCSd4NigoKIg7hKyhXCRkUy5WrVqVVrv5893bt3efPNl93Tr3r74Kfk6eHKyfP792/W/dutW7dOni7u5FRUXeq1cv37Vrl7u7r1u3zrt16+ZbtmzxgoICHzVqVO06ScOQIUO8qKioVvvOmDHDb7zxxvLl+++/33v06OE9evTwAQMG+IsvvrhPP+vXr095nK1bt9aq/9pK9bsHlnkW3jO7COhuZt3MrDlwIcFNasqZWfekxR8AazMYn8gB7513YORImDsXbrkFvvlNOOig4OcttwTrR44M2tVFbm4uQ4YM4c477wRg3Lhx3HzzzRx22GH18CoyY968edx///0sXryY1atXc99993HxxRfzySefVL9zPdmzZ0+DHDe2QuHue4DxwALgLWCOu680s5vCTzgBjDezlWa2guA6RaVhJxFpOPfeC1deCYMGpd4+aBBccQVMm1a743fokJha6JZbbuGBBx7g9ttvZ8+ePVx00UUANG/enDZt0rtj6oYNG+jZsyc/+clPOPbYYzn//PPZvn07AAsXLuS4446jT58+jBkzhl27dlXa//nnn2fQoEEcf/zxDB8+nNLSUgBuuOEG5s6dW6l9y5YtadUquO36bbfdxh133EH79u0BOP74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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pz.plot_pz_loc()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Generate the 3d plot of the Laplace domain response of this filter. Where the Laplace variable $s$ is equal to \n",
"$$s=\\sigma +j\\omega$$\n",
"where $j\\omega$ is the angular frequency response and when $\\sigma$ is zero $s$ gives yields the Fourier transform response of the system. Otherwise $\\sigma=1/\\tau$ the decay response of the system. For more info review the section [\"Transfer Function Analysis\"](https://control.com/textbook/ac-electricity/transfer-function-analysis/) from the controls book at https://control.com/"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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iPb2du655x4+8YlPFGdirVu3juXLl7N161YMw2D16tXHkFfpIMdSwgLGJKgtW7bwt3/7t9x5553T2r7l8ccf59RTT+WUU04B4JprruHee++drNGNCcsUGmpnbL5VBTOAeDzOW9/6Vt761reSy+X45S9/ye23384NN9zARRddxFVXXcWFF15Ia2srhw8fZu3atUQikbE3PE6kUine/va388EPfnBaCQpm1l4qtnIUFZIaA83Nzbzvfe/jfe97X3Em1mc/+1l27NjBypUrufHGG4dV45WilLA+ftM2Xn9x9bAj3wG2bdvGX//1X3PHHXdw+unDF/OWC4cOHRo0pmDBggU89thj07Y/21Ec6SxM2/YrOL6IRqNceeWVXHnllRQKBX7961+zYcMG3v/+9xMKhfj//r//r6wKwUwmwzXXXMO73/1u/uIv/qJs2x0JM2kvFVs5igpJTQD19fW8+93vZsWKFfz7v/87F198Mbfeeit79uzhkksuYf369axZs2bURPJI3hPA888/z7vf/W7+67/+6wRq3zIRqBMmDl7B1BAOh3njG9/IxRdfzJvf/Gbe+9738uCDD/KZz3yGc889l3Xr1vGa17xm0l5VNpvl2muv5ZprruFd73pXeQ9+VqBiKwFmVDhx5513FnM3Tz755NgrzFK87GUv47bbbuO6667jnnvu4Xe/+x3nnXce3/zmN7nwwgv5zGc+w2OPPTah3lt79uzhuuuu4/vf/z5nnXXWNB79UcyfP58DBw4U/z548OD0dhtQlWTwePFisZVYLMYDDzzAm9/8Zr7zne+wadMmrr/+eh555BFe+cpXcv3113PfffdNSOiQz+d55zvfyfr163nve987jUc/GDNqLxVbKWJGSWr16tXcfffdvPKVr5zJ3U4LSsMWVVVVvP3tb+fOO+/kscce41WvehW33XYbL33pS/m7v/s7fv/73+O6x07uDbB//37+4i/+gv/4j/+YyXHvnH/++bzwwgvs2bOHQqHAj3/8Y6688spp259C4bnutP+8GPBitRXTNHnVq17Ft7/9bTZu3MiHP/xhHn/8cV7zmtfwzne+k7vvvptUKjXitgqFAn/1V3/FJZdcwgc+8IFp74hRipm0l4qtHMWMhvtWrhw51PViQSwW46qrruKqq64in8/z0EMPDZqJtX79ei666KLiTKxDhw5x7bXX8q//+q9ccMEFM3qslmXxz//8z1x66aW4rst73vOe6Q0zVqrox42TwVYMw+DCCy/kwgsvxPM8nn76aTZs2MBXv/pVFi9ezLp163jjG99YHNlh2zbXX389F110ETfccMOMEhTMsL1UbKWISk5qGhGJRLjiiiu44oorKBQKPPzww9x111188pOf5Pzzz+dVr3oV3/rWt/jGN77BRRdddFyO8bLLLuOyyy6bkX2piuFVMAIMw+C8887jvPPO40tf+hKbN28uzsRqaWnhTW96Ew899BBnn302n/zkJ2ecoALMlL1UbOUoyk5Sr3vd62hrazvm9X/8x39k3bp15d7dCYNwOMyll17KpZdeWpyJdcstt/De976Xiy+++Hgf3pSQSqXGOVZBjRr2PNlQsZXhYRgGa9asYc2aNdx8881s27aNf/u3f8NxHD772c8eN4IqByq2MnGUnaR+9atflXuTLzqUzsQ60bFjxw6+9rWv8e///u+vVko9POrCSqEqhldExVbGhohwxhln8O1vf/t4H8qUEdjKtddeO7btV2yliEq4r4IpIZPJBMWNnxcRQyn165GWVYBbCWFUcJIisJUvfOELvOY1r3ltxVbGhxlV991zzz0sWLCAP/3pT1x++eVceumlM7n7CsqAoW201q5dy4c//GGAe4G3i8jI809URbE0XlRs5cTHSLbih3IrtjJOzChJXXXVVRw8eJB8Ps+RI0f4xS+m1uV3ppujnmgoZ61NX18fTz75JCLCxo0beeaZZwDYuXMntm0D3AUsB+aNtA3LMmhpDE/7z4sBFVuZWcykrbzlLW+Biq2MGydsuM91XT74wQ8OavZ45ZVXTlvfuRMRQa3N+973vilv6/HHH8ey9OXym9/8hrq6OtauXcvGjRvZuHEjSqn9IvIEcAawebhtdLQ994t/+fLZMzGxsXMG9nHCoGIrY2MmbeXmm28GqNjKODGIpETEAJQapjV6JpPBNM2yNoecCma6OeqJiHLW2lxyySW0t7fz4IMPEovF+N73vsd1113HmjVr+Od//mdE5L+BC4E7R9qGUuoNZTugWYATxV4qtjI2ZtJW3vGOdwBczUlkK1PBoHCfUspTSinRMEtt74knnmDdunWcffbZbNmyZcYPdCiGa/Z46NCh43hEL378+c9/5itf+QpXXnklF1xwAZ/5zGc49dRTecMb3gDwR+A9SqknjvNhzhhK7cV1XWarvVRsZeYxmq1ceOGFcJLZylRQJCkROUtEPi4i85WGG9QjuK7LmWeeyRe+8AW6urro7+8fcYMVzCxe97rXsXr16mN+7r333rLv68orr+Tyyy/n8ssv55xzziGVSvGOd7yDH/zgBwAPjilBfxFhqL2YpknFXmY3ZoutvPGNb+RkspWpojj0UERWAx8BzgN6gfuBe5RSu4sLi1wFXAX8H6VU16AN6dAHSqkZ0U2KyMuAm5RSl/p/f9rf/5dnYv8nEkTkEeATSqlJZ4RFRIKwloh8HDgNeABYCexVSv24HMd6ouBEspeKrYwfFVuZfSjmpJRSW4C/ARCRVwBvA+4VkS8Ddyml8sAbgY1oo8RfNqGUSs8UOZXgCWC5iCwFDgHXANM/VOYkRRDW8o3vASAOeEqpolSs1Dhf7DjB7KViKzOIiq2UF6XhPkNETACl1O+UUh9WSp0JPKCUyotIAi2b/L1SyvXXOR34gIj8RkT+R0TOCrZVst3Xi8jH/PXLBqWUA3wI+AWwDfipUmprOfdxokNErhKRg8DLgPtFZEo65sColFLbgFbgGhEJDX3/ZMCJZC8VWxkbFVuZvZDhzpVvNIZ/cQevXQb/f3v3EjJjFMdx/PtHiIVLLtkIO5cVhdAbCxuXWJAFO2XFwkKxoSyk2BErb6wkCbmkLOSS28IKW6GIXFJEufwszhkmzcu8Zt6Z8878PjWLmZ55njNNv855zu1hM7BN0ouImAgcBF5K2hkRK4FlwC5JX/N3tgPLgenARkkPBvwXNUFE9AKrgNeS5rS7PCX5oyvjCnBI0qU2F6utnBfnpRZnpTlqLubNs5a+AUTErIhYAqwBrkh6kQ9bAUwBeiLiMrABWC7pa0SMjoitwHzS7e5VUgtusDgOeApoDbkrY2huFY4jtRK7mvPivNTirDRHPYt5A9gHLATmRcQbSWeBEcBdSbvzIPJ64H5ELMrHDgF2AJtIrcfPg6UfVtKNiJjW7nKUKndffY+IFZLeDpb/tUWcF/vFWWncP7dFkvRIUg8wHjhCmqECcB1YEBFjJT2UtEfSYVL41gD3gJHAJKDPjRRtUHsH7l+v5rxYH5yV/1T3tkiSPgK9VR89BW4Ct/OA4xngGHCY1Bd/FBhDmtl0vDnFtZI4cH1zXqyas/L/ak6c6NcJIoaRBk0/Sbpa9fko4AAwAzgtqbePUxQpd19c9ECwNZPzYtY/DW8wmweMz1XeR3qm0A9gNml9wF5Jdxq9jlkncF7M+qfhO6m/njxiJvBc0sd6Bwwrx+UZMYuBCcCFvDiyJSLiJLA0X/sVsEfSsVZd37pTf/NSQlZyOZwXGzADWkk1IiIuAM+AyUAP8ATYD5xX63e3MCuWs2KdrKUPPaxHXjOyBfgCbJW0jjSoPAyYSxpcNut6zop1gxIfejg7v07krowJwHvgpKSD7S2aWVGcFet4xd1JAR+AqUBlS5i1+f1jSP3w7SmWWXGcFet4xY1JRcRw0hqSIcA1YCPpkQi3vNbA7DdnxbpBcZVURUSsJrUKT0l60+7ymJXKWbFOVlwl5b2tzOrjrFg3KG5Mqmpr++LKZlYSZ8W6QXF3UmZmZhVugZmZWbFcSZmZWbFcSZmZWbFcSZmZWbFcSZmZWbFcSZmZWbFcSZmZWbF+As8gmEaMynSnAAAAAElFTkSuQmCC\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pz.plot_3d_laplce()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We then can get the symbolic transfer function’s frequency response and view the Nyquist interpretation over the poles and zeros. Though when $K=1$ this can have issues in the plotting."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"#pz.plot_nyquist_with_pz()\n",
"#dont get why this is not working with K=1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As well as plotting the symbolic transfer function’s Bode and Nichols plot interpretation of its response."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/iridium/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:522: UserWarning: Trying to get the mag phase data from `self.get_sym_freq_resp`, \n",
" you get what you get\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pz.plot_nichols_from_pz()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And finally, besides generating the symbolic transfer function, pz_ease can also use scipy's signal module to generate a dictionary containing the transfer functions numerator and denominator terms from the pole zeros and $K$ to the use within the scipy signal module or in the python controls library."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'b': array([1.]), 'a': array([1.e+00, 1.e+04])}"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pz.scipy_pzk(); pz.scipy_tfcoef"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Results with Proper $K$\n",
"\n",
"Now giggle and grin lets see what our lowpass filtes full transfer function responce looks like when we know $K$ using the SPICE estracted poles and zeros from .pz anylsis. Where after overriding the $K$ in `pz_ease` we need to rerun `pz_ease.get_sym_freq_resp()` to regenerate the symploic transfer functions respnonce for the new sympolic transfer function found after $K$ what overridden"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$$\\frac{10000}{s + 10000.0}$$"
],
"text/plain": [
" 10000 \n",
"───────────\n",
"s + 10000.0"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pz.get_pz_sym_tf(overload_K=K_rcl)\n",
"pz.get_sym_freq_resp()\n",
"H_pzk1=pz.sym_tf; H_pzk1"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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vsGLL77Iz372s5IWs/zf//1fbrnlFhzH4eabb+YTn/jESHYfdKY3ZfoydcVNj4xtgEPgh3efMulne6PESSFfmUyGP/7xj6xZs4a//vWvnHfeeaxatapPT6z9+/fT0dGRSxsZK2zb5qabbmL58uV88pOfLJmJb4yyBRMsX8eDbJVJqh9c12XDhg2sWbOGxx57jBkzZrB48WLq6+v54Ac/OGSme37X4aPNaaY2hPjanUv6bKOU4tvf/jb/93//xwMPPFDSCtWO47B48WJ++9vfMmvWLFauXMnPfvazkfTJGVSIGmYsU9e8/1djH+gg+M6dcye9II0SJ5182bbNk08+yZo1a3jyySdzybmXXnopl19+eVEIynEcPvCBD7Bo0SLuuOOOkhFUEWQLJli+jgfZOqnMfcOBYRicffbZnH322Xz+85/nhz/8IXfccQczZ87kySefLNgTKx/5XYcLQSnF97//ff7whz/w0EMPlZSgAJ599lkWLlyYa3/9tre9jV/+8pdFbOamTnpzRBnDh2VZXHzxxVx88cU4jsOtt97KH/7wB55//nkefPBBVq9ezZve9KZBmxcOBsdx+PCHP8ycOXNKSlAwHrIFZfkqk9SgEBFWrVrF6tWrqampYefOnX16Yq1atYorrriCqVOnDlsY7r33Xh555BF++ctfFqWC81A4dOhQn8oAs2bN4plnnineCVTZZl7G6GCaJrfddhv33HMPIsJzzz3HAw88wJe//GUWLlzI6tWrufTSS4nFYsM6nuu6/NM//RP19fXcfffdJY/iK7lsQVm+KJPUkKirq8t9X7x4MZ/61Kf45Cc/yd69e1m7di3vete7sCyLK664gtWrVzN9+vQBheOnP/0pDzzwAI888siIuohOZigUrlO4nFQZZQyFuXPn5r6ff/75nH/++bmeWA888ABf//rXmT17NqtWreKyyy6jurq64HFc1+X2228nFArxb//2b5MtjWPUKMvXOCXzPvDAA7lS/s8///zQO0xyiAjz58/n4x//OE899RQ//vGPsSyLm266iUsuuYRvfvOb7Nu3r0+y7po1a7jvvvt4+OGHR23KGA1mzpzJgQO9JekOHjzIzJlFLD03wcm8JztONNmC3p5YX/rSl3jxxRe5++672b9/P1dccQXXXHMN9957L21tbbntXdfls5/9LNlslm9+85vjRlAlly0o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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pz.plot_nichols_from_pz()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The results show that with an appropriate value of $K$ set we get the value that matches the .ac simulation results."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Asking too much from .pz\n",
"\n",
"Lets now see what happens when .pz does not work"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
value
\n",
"
\n",
"
\n",
"
pz_sim_control
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
tf_type
\n",
"
voltage
\n",
"
\n",
"
\n",
"
acqui_mode
\n",
"
zeros
\n",
"
\n",
"
\n",
"
port_0_terms+-
\n",
"
[In, 0]
\n",
"
\n",
"
\n",
"
port_1_terms+-
\n",
"
[Out, 0]
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" value\n",
"pz_sim_control \n",
"tf_type voltage\n",
"acqui_mode zeros\n",
"port_0_terms+- [In, 0]\n",
"port_1_terms+- [Out, 0]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Error: There are no vectors currently active.\n",
"/home/iridium/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:181: UserWarning: PZ analysis did not converge with the current setting:\n",
" start by changing the tf type (self.tf_type) and pz acusisiton type (self.pz_acu) \n"
]
}
],
"source": [
"pz.pz_mode_set(pz_acu='zeros', display_table=True)\n",
"pz.do_pz_sim(display_table=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this first error case, the pyspice ngspice wrapper catches the ngspice error that in this case, we know is due from trying to calculate zeros from a circuit we know does not have any zeros. We can also run into cases where instead of throwing a blatant error ngspice will throw a warning when it cant converge to a solution. In which case at the moment `pz_ease` won't display the warning but will set `pz_ease.pz_values` to an empty dictionary."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Pole-Zero analysis of a Series Band Reject filter \n",
"\n",
"Here we get the pole-zero analysis results of one of the filter examples from the previous section where we know that the transfer function has a zero coefficient term in its numerator to demonstrate the utility of `pz_ease` to formulate the transfer function form the .pz results.\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n"
},
"metadata": {
"image/png": {
"height": 268,
"width": 442
}
},
"output_type": "display_data"
}
],
"source": [
"#instantiate the rlc_bandstop filter\n",
"bandstopRLC_s=rlc_series_bandstop(L_value=8.33e-5@u_H, C_value=2.7e-7@u_F, R_value=50@u_Ohm)\n",
"bandstopRLC_s.lcapy_self()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$$\\frac{s^{2} + 44462229336.1789}{s^{2} + 600240.096038415 s + 44462229336.1789}$$"
],
"text/plain": [
" 2 \n",
" s + 44462229336.1789 \n",
"──────────────────────────────────────────\n",
" 2 \n",
"s + 600240.096038415⋅s + 44462229336.1789"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"H_rlcs_bs=bandstopRLC_s.get_tf(with_values=True, ZPK=False).ratfloat(); H_rlcs_bs"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAACEAAAASCAYAAADVCrdsAAABdElEQVR4nM3VPWsUURTG8d9KbBSzphGLgMbFXbtYSExIpcISrLZIK9YqKIKFkICrYB2NmDIE9AvYBkIKUfINorssRJCkSfBdsFGLeweWu1lBNsPugcszc86Zmf+cYZ5bqNfr+h2HkvNZPMNrfMUfvOzh/qNYxjZ+YQtPMNLeNJRcNI9xfMdHnOsBoIS3OIFXeIcJ3MEMprFH5yTuooxh3OgBAJYiwG3UcB+XsYAKHmeNKcQ6msJn6CVKqArjf57UHuAHruHofhAHFZeiruJ3UvuGNziCyTwhKlEbXerNqOU8IYpRv3SpZ/njeUL8V+QFkb1psUs9y3/OE+J91HKX+tmojTwh1qNW93nGMcGofmLjICBKgqseTvIt4fc8jVtJ7aHgDy8Ev+iw7VpccDLqFFbi8S7utfWv4RTGBGNqj5uCbS/iCjZxUfCQBuayxhTiPK4nuTNxwYcE4l/RwgU8EvaKq9jBU2Ean7LGwiBu5X2JgYD4C7vvQcyyor7uAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle 1.0$"
],
"text/plain": [
"1.0"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"K_rlcs_bs=np.real(H_rlcs_bs.K.cval); K_rlcs_bs"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
".title \n",
"V1 In 0 DC 0V AC 1V 0.0rad SIN(0V 1V 50Hz 0s 0Hz)\n",
"L1 Out N_1 8.33e-05H\n",
"C1 N_1 0 2.7e-07\n",
"R1 In Out 50Ohm\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"No errors or warnings found during netlist generation.\n",
"\n"
]
}
],
"source": [
"reset()\n",
"#create the nets\n",
"net_in=Net('In'); net_out=Net('Out'); \n",
"\n",
"#create a 1V AC test source and attache to nets\n",
"vs=SINEV(ac_magnitude=1@u_V); vs['p', 'n']+=net_in, gnd\n",
"\n",
"#attaceh term_0 to net_in and term_2 to net_out per scikit-rf convention all \n",
"#other terminals are grounded\n",
"bandstopRLC_s.SKiDl(net_in, gnd, net_out, gnd)\n",
"\n",
"circ=generate_netlist()\n",
"print(circ)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"filter_responce.symbolic_tf(bandstopRLC_s)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Where again we will invoke the .tf of this function to show that .tf will not give us $K$ reliably only in this case serendipitously. So don't rely on it for finding $K$."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"tf=easy_tf(circ)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pz.plot_3d_laplce()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/iridium/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:491: UserWarning: Trying to get the real imag data from `self.get_sym_freq_resp`, \n",
" you get what you get\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAbIAAAEWCAYAAAAD/hLkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAueklEQVR4nO3de5xVVf3/8dcHvIA3lEtkDCoSXiBBFE1EA8UrJV4CTUpAULHA1OpLgFGUyTex8vIdS0xBMFNITUnhhxcYShAFxARvMajIkJcEUQbEkeHz+2OvmTkznHPmwsycveH9fDz2Y/Zee+29Puf6mbXOOvuYuyMiIpJUTXIdgIiIyM5QIhMRkURTIhMRkURTIhMRkURTIhMRkURTIhMRkURTIpPYMLO7zGx8I7b3XTN7Ksv+PmZW1AhxFJjZFQ3dTn1rrPsnTbuvmlmfxm43k6Q+frsSJTKpxMzeMbMPzWzflLIrzKygodt296vd/cbq6oUYz6iH9h5w97NSzutm9tW6ni+8oW01s2Iz+8jMHjWzg3c2ziztHRLaqrpsM7N5DdVuYzKz+8zs16ll7t7F3QtyFFKdmdlh4Tm2R65j2dUokUk6TYFrcx1EQo1y9/2AI4ADgVsbqiF3f9fd90tdgJOBz4CJtT2f3mAlqZTIJJ1bgJ+Y2YFVd5jZnWb2uypls8zs+rDe3cxeMrNNZjbDzB4q+4/azIaa2XNVji3vBaX+921mrc3sCTPbaGYbzOyfZtbEzO4HDgH+Hnofo9PEuMDMvh3We4U2vhm2+5rZy1XjMbN/hMP/Fc57Scr5fhx6qe+Z2eU1uQPdfQPwCPC1cI6TzWyJmX0S/p6c6VgzG2Zmr5vZx2Y218wOrUmbZnYA8DBws7s/E8qamNkYM1ttZuvNbKaZtQz7ynoIw83sXWBeqP8zM1sTbvN0M2tRw/aPDr3SjWH4r3/KvuZm9rtw3k/M7Dkzax72/dXM3g/l/zCzLqH8KuC7wOjwmPw9lJf3yM1sbzO7zcz+E5bbzGzvsK+PmRVlevzMrJ+ZvRaeq+vM7CcZbtdQM1toZvkhxjfMrG+Gutnuv7Ln2MZwe3rW5H6V6imRSTpLgQIg3Qt7GnCpmTWBKOEAZwB/MbO9gMeA+4GWwF+Bb9cxhh8DRUAboC0wDnB3vwx4Fzgv9EImpTl2AdAnrPcG3gK+kbK9oOoB7l62v1s474yw/WWgBdAOGA7caWYHVRd8uF++DSwPieNJ4A6gFfB74Ekza5XmuPPDbb0o3PZ/Ag9W114wFVgF3JRSdg1wAdHt/grwMXBnleN6A0cDZwNDw3IacDiwH5BfXcNmtifwd+Ap4Euh3QfM7MhQ5bfA8UQ9xpbAaGB72DcH6BSOewl4AMDd7w7rk8Jjcl6apm8ATgKOBboBJwI/S9mf7fG7Fxjh7vsT/cORbTj268BqoDXwC+DRsn8IqhhK5vuv7Dl2YLg9z2dpT2rD3bVoKV+Ad4gS09eAT4jeTK8AClLqvA6cGdZHAbPD+jeA/wCWUncR8OuwPhR4rkp7Dnw1rN+XUvdXwONl+9LFmOU29AVeCev/L8S/OGwvAC5KF09qLGG7D9Ew3R4pZR8CJ2VotwDYAmwE1hG9CbcBLgNerFL3eWBoynFXhPU5wPCUek3COQ+t5nH7cbhfWlYpfx3om7J9MPAFsAdwWLjNh6fsfxb4Qcr2kWX107TZBygK66cC7wNNUvY/CEwIt+Ezon8Sqnv+HRhialH1OZHu8SdKLv1S9p0NvFOTx4/oH6IRwAHVxDSUHZ/XLwKXpXn8Mt5/Kff3Dvellp1b1COTtNx9JfAEMCbN7mnA98L694h6YBD9x7/Owys4WFPHEG4BCoGnzOwtM0sXRybPA0eYWVui/9SnA+1DL+lEKoZ4amK9u29L2d5C9F92Jj909wPdvZ27f9fd/0t0v1S9H9YQ9RKqOhS4PQzPbQQ2AAa0M7NxVjGh466yA8zsFOCXwACPhjSrnu9vKed7HSgl6uWWWZuyXjXWNURvwqn10/kKsNbdt6eUld3G1kAzoqRTiZk1NbPfhKHPT4mSFOGYmkgX71dStrM9ft8G+gFrLBqOzjbUl+55/ZU09ep6/8lOUCKTbH4BXMmOb7h/Bs43s25EQ1KPhfL3iN5wLaXuISnrm4F9yjbM7MuZGnb3Te7+Y3c/HOgP/Cjlc4msP9ng7luAZUQTVla6ewlRz/BHwGp3/yjb8Q3gP0QJJdUhRL22qtYSDXcdmLI0d/dF7j7RKyZ2XA0QkvUM4CfuvjTD+c6tcr5m7p7adur9WTXWQ4BtwAc1uI3ty4acq9zGj4CtQMc0xw0CzicaBWhB1GuBKHlXjS1Tu1Xj/U81x0Qndl/i7ucTDWk+BszMUj3d8zpdO9nuP/3USANRIpOM3L2Q6E3yh1XKi4AlRD2xR9z9s7DreaIX7Q/NbE8zu4ioB1TmX0AXMzvWzJoRDTulZWbfMrOvhjePT4h6EWX/7X9A9PlDNguIhj3LPg8rqLKdTk3OWxeziXqIg8xsD4smknQm6vFWdRcwNmXCQwszG5jupGbWFHgImOfud6WrE853k4UJI2bWJnwOl8mDwPVm1sHM9iOa/TijSq8mnReIejujw2PfBzgPeCj00qYAvzezr4ReWM8wKWN/4HNgPdE/OVVnW1b3mDwI/CzcrtbAz4n+0crKzPay6HuELdz9C+BTKp5f6XyJiuf1QKJ/4GZniCfT/fff0EZDPMd2a0pkUp1fAfumKZ8GHEPFsCKh53MR0WcKG4BLgEdT9v87nO8ZokkJlWYwVtEp1CsmSpB/cPf5Yd//Er15bcw004woYe1PxTBi1e10JgDTwnkvzlKvVtx9PfAtos+x1hNNdPhWup6hu/8NuBl4KAy1rQTOzXDqXkSfA33bdvwu2auhzu3ALKIh2k3AYqKJC5lMIXpM/wG8TdSTuqYGt7GEKHGdS9QD+wMw2N3fCFV+Aqwg+gdoQ7iNTYiGfdcQ9dxeC/GluhfoHB6Tx9I0/WuiyUmvhPO/FMpq4jLgnXA/X000QzKTF4iekx8RTaYZEB7XqjLef2Gk4CZgYbg9J9UwTqmGVR72FakZM/sG0X++h3qWJ5GZ3Uc0IeBnmeqIxJmZDSWazHFKrmOR9NQjk1oLU62vBe7JlsRERBqDEpnUipkdTTS9/GDgtpwGIyKChhZFRCTh1CMTEZFE00VCa6h169Z+2GGHpd23efNm9t033cS++Etq7EmNGxR7riQ19mXLlgFw/PHH5ziSulm2bNlH7t6mIdvQ0GIN9ejRw5cuTfd9UygoKKBPnz6NG1A9SWrsSY0bFHuuJDX2su9hJ/W92syWuXuPhmxDQ4siIpJoSmQiIpJoSmQiIpJomuyxE7744guKiopo0aIFr7/+eq7DqZOkxp7ruJs1a0ZeXh577rlnzmKQXdvq1ZCf8ktwbdvCoEEwahR0THf55d2YEtlOKCoqYv/996dVq1YccMABuQ6nTjZt2sT++++f6zBqLZdxuzvr16+nqKiIDh065CQG2bXNmQODB8OVV8KMGUtp3vxDOneGe++Fk06C6dPh3ExX4NwNaWhxJ2zdupVWrVqVzyqS3YOZ0apVK7Zu3ZrrUGQXtHp1lMRmzYKJEyEv73OaNnU6doy2Z82K9q/e4dfddl9KZDtJSWz3pMddGkp+ftQT65nhZz579oQrroA772zcuOJMiayRrF4N118fjXM3bRr9vf56/VclIpX95S8wfHjF9iWXXMKIESMq1bniiqieRJTIGsGcOdG4dvPmsGgRfP559Ld586h8zpy6n7vsaiNLly6lS5culJSUALB69WoOP/xwPv30UwoKChg6dOjO35AM+vTpQ6Yvi1fnvvvuY8KECeXbd999N0cddRRHHXUUJ554Is89V/GTZX369OGdd97ZyWhF4u2jj+DQlN+YLioqoqioqFKdQw6J6klEiayBVR3v7tgR9tiDeh/v7tGjB7179+a3v/0tACNHjuSmm25K1CSUJ554gsmTJ/Pcc8/xxhtvcNdddzFo0CDef//9Roth27bqfghZpGG1bg1r1mSv8+67UT2J5CyRmVl7M5tvZq+Z2atmdm0ob2lmT5vZqvD3oFBuZnaHmRWa2StmdlzKuYaE+qvMbEhK+fFmtiIcc4eFDzYytdEQGnq8u02bikuYTZw4kT/96U9MmjSJbdu2cemllwKw11570aJFixqd75133uGoo47iu9/9LkcffTQDBgxgy5YtADz77LN0796dY445hmHDhvH555/vcPxTTz1Fz549Oe644xg4cCDFxcUA/PznP2fWrFk71G/evDn77bcfADfffDO33HILrcMr9LjjjmPIkCHcGe6cli1b0rRp0xrdjmOPPbZ8ad68OQsWLGDz5s0MGzaME088ke7du/P4448DUa+wf//+nH766fTt25cNGzZwwQUX0LVrV0466SReeeWVGrUpUh8GDYpmJ2Zzzz1RPQncPScL0e9ZHRfW9wf+DXQGJgFjQvkY4Oaw3g+YAxhwEvBCKG8JvBX+HhTWDwr7Xgx1LRx7bihP20a25fjjj/eqXnvtNXd3//TTT3fYV+ZLX3IvLMy4292j/W3bZq9TU3fddZc3adLE33jjjbT7582b5926dStfjjnmGO/WrZv37NnT3d3ffvttB/y5555zd/fLL7/cb7nlFv/ss888Ly/P33zzTXd3v+yyy/zWW291d/fevXv7kiVL/L///a+feuqpXlxc7O7uv/nNb/yXv/xljWM/6KCDfOPGjZXKHnvsMb/wwgt3qHvRRRdVuh1ly7Rp0yrV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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pz.plot_nyquist_with_pz()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that because of the larger space of the poles of zero for this system under test the results of the frequency response is concentrated around (0,0) and shows up as a blip."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"