Forum
>>
Principianti
>>
Operatore bit shifter
Pagina: 1 2 Avanti
Esegui il login per scrivere una risposta.
Scritto da h |
2015-07-07 20:15:51 - Operatore bit shifter
|
Di nuovo salve a tutti...
imparando a utilizzare python avevo pensato di cimentarmi nella scrittura di una fft... il mio iniziale problema in fase di compilazione si è rilevato l'operatore di bit shift, la riga imputata: # modulo fft from math import * def fft(m, f=[]): #genera fft result = [] n=2<< ;(m-1) nesp=0.5 for k in range(1,m+1):....l'errore: >>> import fft Traceback (most recent call last): File "<stdin>", line 1, in <module> File "fft.py", line 6 n=2<< m-1) ^ IndentationError: unindent does not match any outer indentation level ma come può essere un errore di indentazione??? vi ringrazio in anticipo... --- Ultima modifica di h in data 2015-07-07 20:19:29 --- --- Ultima modifica di h in data 2015-07-07 20:19:55 --- |
|
Scritto da Daniele aka Palmux |
2015-07-07 20:21:12 - Re: Operatore bit shifter
|
C'è sicuramente uno spazio malandrino che ti ha scombussolato il codice, ci punto un centesimo.
Cya |
|
Scritto da h |
2015-07-07 20:21:16 - Re: Operatore bit shifter
|
mi sono accorto che la mia domanda non aveva senso...
ho un errore di indentazione ma non capisco perchè... l'intero codice: # modulo fft from math import * def fft(m, f=[]): #genera fft result = [] n=2<<(m-1) nesp=0.5 for k in range(1,m+1): d=n/(2<<(k-1) nesp=nesp*2 s=0 for i in range(1,nesp+1): r=s z1=r>>(m-k) z=0 for q in range(k): z=(((z1>>q) & 01) | (z<<1) w=2*pi*z/(2<<(k-1)) e=cos(w)-sin(w)j for l in range (d): r=l+s r1=r+d t=e*fr1 fr1=fr-t fr=fr+t s=s+2*d #bitReversal(n, m, f=[]) for x in range(1, n-1): y=0 for i in range(m): y=(((x>>i) & 01) | (y<<1)) if x<y : t=fx fx=fy fy=t #Ampiezze fasi nmezzi=n/2 for i in range(n): f=f/nmezzi A0=f0.real phi0=0 for k in range(1, nmezzi+1): Ak=sqrt(fk.real*fk.real+fk.imag*fk.imag]) result.append(Ak) if fk.real == 0: if fk.imag>0: phik=pi if fk.imag==0: phik=0 if fk.imag<0: phik=2*pi-pi/2 if fk.real>0: if fk>=0: phik=atan(fk.imag, fk.real) if fk<0: phik=2*pi + atan(fk.imag, fk.real) if fk.real<0: phik=atan(fk.imag, fk.real) return result |
|
Scritto da Daniele aka Palmux |
2015-07-07 20:26:51 - Re: Operatore bit shifter
|
No h, così diventiamo matti nel leggere il codice.
Se non usi il pulsante apposito postalo su PasteBin e metti il link. Cya |
|
Scritto da h |
2015-07-07 22:36:25 - Re: Operatore bit shifter
|
capito quale era il mio errore: l'indentazione era visivamente corretta ma ottenuta, per quell'unico rigo, con lo spazio invece che tramite tab... ho postato il codice su pastebin, perchè ho un errore di sintassi: http://pastebin.com/dKWyMGbi
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "fft.py", line 10 nesp=nesp*2 ^ SyntaxError: invalid syntax dove ho cercato di posizionare ^ sotto la p del primo nesp Daniele sono nelle tue mani. |
|
Scritto da ㎝ |
2015-07-08 01:22:02 - Re: Operatore bit shifter
|
Guarda la riga immediatamente precedente a quella che ti viene segnalata come errata...
THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da Daniele aka Palmux |
2015-07-08 09:49:24 - Re: Operatore bit shifter
|
Come ti ha suggerito C8E, guarda con attenzione il tuo codice.
Contiene una moltitudine di indentazioni diverse, passando da spazi a TAB. Con Python devi essere preciso nella scrittura e non lasciare spazi e TAB a caso. Dopo il primo result=[] dai un tab e uno spazio a fine riga e la riga successiva, n = 2 << (m-1), ha l'indentazione con gli spazi (oltretutto sono dispari). Questo è male. Scegli uno standard (se accetti un consiglio butta via i TAB ed usa indentazioni a 4 spazi) e segui sempre quello, altrimenti Python non perdona. Ciao. Daniele P.S. Non se nelle mie, ma nelle tue mani. --- Ultima modifica di Daniele aka Palmux in data 2015-07-08 09:51:32 --- |
|
Scritto da h |
2015-07-08 12:56:59 - Re: Operatore bit shifter
|
dunque ho reindentato tutto il codice passando dal tab ai 4 spazi, ho ripostato il codice: http://pastebin.com/YfG4aaTq
mi da sempre lo stesso errore di sintassi: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "fft.py", line 10 nesp=nesp*2 ^ SyntaxError: invalid syntax cosa vuole? |
|
Scritto da Daniele aka Palmux |
2015-07-08 13:07:31 - Re: Operatore bit shifter
|
Sei sicuro, vedo ancora un sacco di TAB nel tuo codice, vedo commenti allineati a caso, controlla meglio.
Una curiosità, ma che editor usi? Con un editor un minimo senziente, questi problemi li elimini facilmente e ti accorgi al volo della "sporcizia" lasciata nel codice. Cya --- Ultima modifica di Daniele aka Palmux in data 2015-07-08 13:10:47 --- |
|
Scritto da Daniele aka Palmux |
2015-07-08 13:09:31 - Re: Operatore bit shifter
|
Oltre a questa riga:
d=n/(2<<(k-1)Come vedi manca una parentesi in chiusura. Cya |
Pagina: 1 2 Avanti
Esegui il login per scrivere una risposta.