Fitxer:Minimum and maximum phase responses.gif
De testwiki
Salta a la navegació
Salta a la cerca
Minimum_and_maximum_phase_responses.gif (450 × 450 píxels, mida del fitxer: 573 Ko, tipus MIME: image/gif, en bucle, 55 fotogrames, 2,8 s)
Aquest fitxer prové de Wikimedia Commons i pot ser usat per altres projectes. La descripció de la seva pàgina de descripció es mostra a continuació.
Resum
| DescripcióMinimum and maximum phase responses.gif |
English: Shows the phase responses of a minimum and maximum phase responses when |
| Data | |
| Font | Treball propi |
| Autor | fdeloche |
Llicència
Jo, el titular dels drets d'autor d'aquest treball, el public sota la següent llicència:
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.
- Sou lliure de:
- compartir – copiar, distribuir i comunicar públicament l'obra
- adaptar – fer-ne obres derivades
- Amb les condicions següents:
- reconeixement – Heu de donar la informació adequada sobre l'autor, proporcionar un enllaç a la llicència i indicar si s'han realitzat canvis. Podeu fer-ho amb qualsevol mitjà raonable, però de cap manera no suggereixi que l'autor us dóna suport o aprova l'ús que en feu.
- compartir igual – Si modifiqueu, transformeu, o creeu a partir del material, heu de distribuir les vostres contribucions sota una llicència similar o una de compatible amb l'original.
Generation code
Minimumphase.py
# coding: utf-8
'''Generate an animation showing the phase response for a minimum and maximum phase system'''
__author__ = "fdeloche"
# In[1]:
get_ipython().magic(u'matplotlib inline')
import sys
import numpy as np
import matplotlib.pyplot as pl
from matplotlib.animation import FuncAnimation
# In[2]:
createGif=True
pl.rc('xtick', labelsize=20)
pl.rc('ytick', labelsize=20)
pl.rc('font', weight='bold')
# In[3]:
fig, ((ax1, ax2), (ax3, ax4)) = pl.subplots(2, 2, figsize=(15, 15))
#fig.set_tight_layout(True)
a_x = 0.8
a_y=0.
m=1000
A = a_x + 1j*a_y
a_mod = np.abs(A)
Ainv = 1./A
a_xbis = np.real(Ainv)
a_ybis = -np.imag(Ainv)
# r^2 =
x_lim_a = -0.3
x_lim_b = 1.9
y_lim = 1.1
t = np.linspace(0, 1, num=m)
ax1.scatter(0, 0, linewidth=6, color='blue')
ax1.scatter(1, 0, linewidth=4, color='blue')
ax1.set_xlim([x_lim_a, x_lim_b])
ax1.set_ylim([-y_lim, y_lim])
ax1.set_title('$1-az^{-1}$', fontsize=35)
ax1.plot(t, np.zeros(m), color='blue', linewidth=4)
ax1.plot(1+a_mod*np.cos(2*np.pi*t), a_mod*np.sin(2*np.pi*t), color='black')
ax1.axis('off')
ax1.text(-0.2, 0.1, "$(0, 0)$", fontsize=30, color='blue')
ax1.text(1-0.1, 0.1, "$(1, 0)$", fontsize=30, color='blue')
ax3.set_title('$\overline{a}(1-\overline{a}^{\ -1}z^{-1})$', fontsize=35)
ax3.scatter(0, 0, linewidth=6, color='blue')
ax3.scatter(np.abs(A), 0, linewidth=4, color='blue')
ax3.set_xlim([x_lim_a, x_lim_b])
ax3.set_ylim([-y_lim, y_lim])
ax3.plot(t*np.abs(A), np.zeros(m), color='blue', linewidth=4)
ax3.plot(np.abs(A)+np.cos(2*np.pi*t), np.sin(2*np.pi*t), color='black')
ax3.axis('off')
ax3.text(-0.1, 0.1, "$(0, 0)$", fontsize=30, color='blue')
ax3.text(-0.1+np.abs(A), 0.1, "$(\overline{a}, 0)$", fontsize=30, color='blue')
Z = np.cos(2*np.pi*t) - 1j*np.sin(2*np.pi*t)
G = np.angle(1-A*Z)
ax2.set_title('Phase response', fontsize=25)
ax2.plot(2*np.pi*t, G, color='blue', linewidth=2)
ax2.plot(2*np.pi*t, 0*t, color='black')
G2 = np.angle(1-np.conj(Ainv)*Z)
#ax4.set_title('Phase response', fontsize=25)
ax4.plot(2*np.pi*t, G2, color='blue', linewidth=2)
ax4.plot(2*np.pi*t, 0*t, color='black')
ax2.set_ylim([-np.pi, np.pi])
ax4.set_ylim([-np.pi, np.pi])
ax2.set_xlim([0, 6.283])
ax4.set_xlim([0, 6.283])
'''
ax2.spines["top"].set_visible(False)
ax2.spines["right"].set_visible(False)
ax4.spines["top"].set_visible(False)
ax4.spines["right"].set_visible(False)
'''
# In[4]:
line1, = ax1.plot(1-np.abs(A)*t*1, t*0, color='blue', linewidth=4)
line2, = ax3.plot(np.abs(A)-t*1, t*0, color='blue', linewidth=4)
line3, = ax1.plot((1-np.abs(A))*t*1, t*0, color='red', linewidth=4)
line4, = ax3.plot((np.abs(A)-1)*t, t*0, color='red', linewidth=4)
point1 = ax1.scatter(1-np.abs(A), 0, linewidth=5, color='red')
point2 = ax3.scatter(np.abs(A)-1, 0, linewidth=5, color='red')
line5, = ax2.plot(0*t, G[0]*t, color='red', linewidth=4)
line6, = ax4.plot(0*t, G2[0]*t, color='red', linewidth=4)
point3 = ax2.scatter(0, G[0], color='red', linewidth=5)
point4 = ax4.scatter(0, G2[0], color='red', linewidth=5)
# In[5]:
n_frames = 55
def update(i):
t0 = i*1./n_frames
B = [a_mod*np.cos(2*np.pi*t0), -a_mod*np.sin(2*np.pi*t0)]
line1.set_xdata(1-t*B[0])
line1.set_ydata(-t*B[1])
C = [np.cos(2*np.pi*t0), -np.sin(2*np.pi*t0)]
line2.set_xdata(np.abs(A)-t*C[0])
line2.set_ydata(-t*C[1])
line3.set_xdata((1-B[0])*t)
line3.set_ydata(-t*B[1])
line4.set_xdata((np.abs(A)-C[0])*t)
line4.set_ydata(-t*C[1])
point1.set_offsets((1-B[0], -B[1]))
point2.set_offsets((np.abs(A)-C[0], -C[1]))
line5.set_xdata(2*np.pi*t0+0*t)
line6.set_xdata(2*np.pi*t0+0*t)
Z0 = np.cos(2*np.pi*t0) - 1j*np.sin(2*np.pi*t0)
G0 = np.angle(1-A*Z0)
G20 = np.angle(1-np.conj(Ainv)*Z0)
line5.set_ydata(G0*t)
line6.set_ydata(G20*t)
point3.set_offsets((2*np.pi*t0, G0))
point4.set_offsets((2*np.pi*t0, G20))
return line1, line2, line3, line4, point1, point2, line5, line6, point3, point4
# In[ ]:
anim = FuncAnimation(fig, update, frames=np.arange(0,n_frames), interval=50, blit=True)
if(createGif):
anim.save('result.gif', dpi=30, writer='imagemagick')
else:
pl.show()
# In[ ]:
Llegendes
Afegeix una explicació d'una línia del que representa aquest fitxer
Elements representats en aquest fitxer
representa l'entitat
Algun valor sense element de Wikidata
21 set 2016
Historial del fitxer
Cliqueu una data/hora per veure el fitxer tal com era aleshores.
| Data/hora | Miniatura | Dimensions | Usuari/a | Comentari | |
|---|---|---|---|---|---|
| actual | 10:35, 21 set 2016 | 450 × 450 (573 Ko) | wikimediacommons>Ixnay | User created page with UploadWizard |
Ús del fitxer
La pàgina següent utilitza aquest fitxer:
