Hola, ya que la lista se usa últimamente para plantear todo tipo de dudas, a
ver si alguien me puede echar un cable con esto.
Mirando algunos ejemplos sobre DSP, me encontré un ejemplo que me gustó. Es
claro y sencillo, tanto como para empezar a jugar un poco con las FFTs. Mi
problema es que no entiendo mucho cómo pasa el formato binario a "vete tú a
saber". El error que me da al ejecutar es:
File "wave_file.py", line 57, in getFreqPwrFFT
temp[i,:] = array(struct.unpack("%dB"%(fft_length), tempb),Float) -
128.0
struct.error: unpack str size does not match format
¿Alguien que sepa un poco de arrays y structs me podría aclarar un poco por
qué falla y cómo funciona esto realmente? El ejemplo qie estoy siguiendo
está en:
http://www.onlamp.com/pub/a/python/2001/01/31/numerically.html?page=2
funcion:
--------------------------------------------
def getFreqPwrFFT(self, fft_length):
if self.nchannels > 1:
print 'Muestra con mas de un canal'
return null
else:
# Rellenamos array y procesamos
num_fft = (self.nframes / fft_length ) - 2
temp = zeros((num_fft,fft_length),Float)
for i in range(num_fft):
tempb = self.wavefile.readframes(fft_length);
print '.'
# Ahora peta...
temp[i,:] = array(struct.unpack("%dB"%(fft_length),
tempb),Float) - 128.0
#10*log 10 pasamos a decibelios.
freq_pwr = 10*log10(1e-20+abs(real_fft(temp,fft_length)))
return freq_pwr
_______________________________________________
CRySoL mailing list
http://crysol.inf-cr.uclm.es/
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol