Fichier:Minimum and maximum phase responses.gif

Minimum_and_maximum_phase_responses.gif(450 × 450 pixels, taille du fichier : 573 kio, type MIME : image/gif, en boucle, 55 trames, 2,8 s)

Ce fichier et sa description proviennent de Wikimedia Commons.

Description

Description
English: Shows the phase responses of a minimum and maximum phase responses when is a monomial with . Both filters have the same gain response. Top : Minimum phase filter. Bottom : Maximum phase filter. Left : Nyquist diagram. Right : Phase responses
Date
Source Travail personnel
Auteur fdeloche

Conditions d’utilisation

Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous la licence suivante :
w:fr:Creative Commons
paternité partage à l’identique
Vous êtes libre :
  • de partager – de copier, distribuer et transmettre cette œuvre
  • d’adapter – de modifier cette œuvre
Sous les conditions suivantes :
  • paternité – Vous devez donner les informations appropriées concernant l'auteur, fournir un lien vers la licence et indiquer si des modifications ont été faites. Vous pouvez faire cela par tout moyen raisonnable, mais en aucune façon suggérant que l’auteur vous soutient ou approuve l’utilisation que vous en faites.
  • partage à l’identique – Si vous modifiez, transformez, ou vous basez sur cette œuvre, vous devez distribuer votre contribution sous la même licence ou une licence compatible avec celle de 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[ ]:

Légendes

Ajoutez en une ligne la description de ce que représente ce fichier

Éléments décrits dans ce fichier

dépeint

Historique du fichier

Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.

Date et heureVignetteDimensionsUtilisateurCommentaire
actuel21 septembre 2016 à 11:35Vignette pour la version du 21 septembre 2016 à 11:35450 × 450 (573 kio)IxnayUser created page with UploadWizard

Les 2 pages suivantes utilisent ce fichier :

Usage global du fichier

Les autres wikis suivants utilisent ce fichier :