Autor Tema: Transformada discreta de fourier

0 Usuarios y 1 Visitante están viendo este tema.

12 Mayo, 2021, 12:39 am
Leído 529 veces

julianov

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 5
  • País: ar
  • Karma: +0/-0
Hola a todos.

Estoy estudiando la transformada discreta de fourier y quiero graficar la misma usando python. Para ello genero un arreglo de números de la siguiente manera:

x=[]
y=[]
for i in range(0, 600):
    x.append(i)

repe=60
N=600

for i in range (0,600):
    y.append(math.sin((2*math.pi*(repe / N ))*i))

plt.plot(x,y)
plt.show()

repe es el periodo de la señal senoidal en la muestra de 6000 números. Es decir, la señal oscilará 60 veces en el arreglo de 600 números.



Ahora quiero calcular y visualizar la serie discreta de fourier y para eso hago lo siguiente:

real=0
img=0
dft=[]

for i in range(0, N-1):
    for j in range (0,N-1):
       real=real+y[j]*( math.cos(-((2*3.14)/N)*i*j))
       img=img+y[j]*(math.sin(-((2*3.14)/N)*i*j))
    dft.append( math.sqrt( math.pow(real,2) + math.pow(img,2) ) )
    real=0
    img=0


plt.plot(dft)
plt.ylabel('some numbers')
plt.show()

Pero obtengo un gráfico no consistente con 2 deltas de dirac (como debe ser porque la serie de fourier de una señal senoidal son 2 delta de dirac) pero con diferente amplitud cada uno. Y no pudo localizar la frecuencia de la misma. Pueden ver la imagen en los archivos adjuntos




Si ven la siguiente imagen adjunta, la distancia d, que va del valor 300 (que supongo sería el valor medio) no tiene correlación con la frecuencia. ¿Y por qué las deltas tienen diferente amplitud?



12 Mayo, 2021, 01:27 am
Respuesta #1

Abdulai

  • Moderador Global
  • Mensajes: 2,699
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Estás usando otra frecuencia en la transformada.

Código: [Seleccionar]
real=real+y[j]*( math.cos(-((2*3.14)/N)*i*j))
 img=img+y[j]*(math.sin(-((2*3.14)/N)*i*j))

Si antes usaste math.pi no entiendo por qué ahi usas ese espantoso redondeo.
Corregido debe dar lo que esperas.

12 Mayo, 2021, 01:53 am
Respuesta #2

julianov

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 5
  • País: ar
  • Karma: +0/-0
Muchas gracias el problema de que las deltas tienen diferente tamaño se solucionó.



Ahora el problema que tengo es que no entiendo por qué la delta comienza en 60 y en 540. ¿No debería comenzar en los deltas en 300-60 y en 300+60?



Por qué digo eso?, bueno proque los deltas son simétricos, y por lo tanto el cero de la frecuencia, al tener un arreglo de 600 elementos sería en 300

12 Mayo, 2021, 09:39 am
Respuesta #3

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 51,528
  • País: es
  • Karma: +0/-0
Hola

 Pero 60 y 540 igualmente son simétricos respecto a 300.

Saludos.

13 Mayo, 2021, 01:58 am
Respuesta #4

julianov

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 5
  • País: ar
  • Karma: +0/-0
Gracias a todos por sus respuestas.

Tengo una consulta. ¿Por qué se repite la serie? Por qué si yo hago:

for i in range(0, 2* (N-1)):
    for j in range (0,N-1):
       real=real+y[j]*( math.cos(-((2*3.14)/N)*i*j))
       img=img+y[j]*(math.sin(-((2*3.14)/N)*i*j))
    dft.append( math.sqrt( math.pow(real,2) + math.pow(img,2) ) )
    real=0
    img=0

Obtengo 2 veces lo mismo, y si hago:

for i in range(0, 3*(N-1)):
    for j in range (0,N-1):
       real=real+y[j]*( math.cos(-((2*3.14)/N)*i*j))
       img=img+y[j]*(math.sin(-((2*3.14)/N)*i*j))
    dft.append( math.sqrt( math.pow(real,2) + math.pow(img,2) ) )
    real=0
    img=0

Obtengo 3 veces lo mismo.



\( x(k) = {\sum }_{n=0 }^{N-1} {e }^{ - \frac{- 2 \pi}{N } n k } \)

Estimo que si k=N entonces \( {e }^{ - \frac{-2 \pi}{ 1} n  } \) Pero ¿Por qué no sucede lo mismo en la transformada continua?

\( x(k) = {\int}_{0 }^{\infty} x(t) {e }^{ - \frac{2 \pi}{T } t k } dt \) ¿Qué pasa cuando T=t? ¿No sucede lo mismo?