Topic: Come applicare un filtro a coseno rialzato  (Letto 844 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline giuseppe.r

  • python unicellularis
  • *
  • Post: 6
  • Punti reputazione: 0
    • Mostra profilo
Come applicare un filtro a coseno rialzato
« il: Luglio 29, 2015, 10:36 »
ciao a tutti,

nonostante abbia fatto ricerche non ho trovato nulla che mi aiuti. Ho relizzato un filtro a coseno rialzato nel seguente modo:

[codice]
t=np.r_[-2:2+passo:passo]   #Limiting the response to -4T to 4T
# This can be increased or decreased according to the requirement
p=np.zeros(len(t));
for i in range (0, len(t)):
    if t==0:       
        p= (1-a)+4*a/np.pi;
    elif t==1/(4*a) or t==-1/(4*a):
        p=a/np.sqrt(2)*((1+2/np.pi)*np.sin(np.pi/(4*a))+(1-2/np.pi)*np.cos(np.pi/(4*a)));
    else:
        p = (np.sin(np.pi*t*(1-a))+4*a*t*np.cos(np.pi*t*(1+a)))/(np.pi*t*(1-(4*a*t)**2))

    response=(p/np.sqrt(sum(p**2)));   #Normalization to unit energy
    z=np.zeros(len(response)-1);
    new1=np.concatenate((z, EDA));
    new=np.concatenate((new1, z))
    EDA_f=lfilter(new, 10, response, axis=0);
[/codice]

ma non capisco come poterlo applicare. Quello che vorrei è simile al comando Matlab

EDA_f=filter(response, 10, new);

In Matlab viene dato il vettore degli zeri (response) e il polo (10). Ho provato con lfilter ma questo vuole 2 vettori con il solo valore 10 al posto di un vettore mi da errore.
Ci sono altre alternative? Qualcuno può darmi indicazioni?
grazie.
giuseppe

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.654
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: Come applicare un filtro a coseno rialzato
« Risposta #1 il: Luglio 29, 2015, 11:05 »
Un suggerimento che posso darti innanzitutto è che non si dovrebbe mai iterare in quel modo su array numpy, e anche mai fare confronti tra float in quel modo.

Per il resto non saprei, non conosco Matlab. lfilter è di Scipy?