Autor Tema: Dibujar una fft a traves de Matlab  (Leído 7181 veces)

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

Desconectado arcadi

  • PIC12
  • **
  • Mensajes: 74
Dibujar una fft a traves de Matlab
« en: 22 de Enero de 2009, 09:20:45 »
Buenas...

estoy un poco confundido con la fft de Matlab... pido si alguien me puede ayudar.  :-/

Resulta que puedo adquirir la parte real e imaginaria de la fft, pero no la se mostrear (plotear) correctamente,

Adjunto dos programas de ejemplo:


------------------Programa 1---------------------------------

>> x=[5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];
>> t=0:1:15;
>> stem(t,x)
>> %Dibujo una recta
>> f=fft(x);
>> re=real(f);
>> im=imag(f);
>> %He separado la parte real de la imaginaria
>>
>> plot(im,re)
>> %real=amplitud=80! --> Si divido por 16 muestras que tengo, sale correcto (amplitud=5)
>> %imag=frecuencia=0 -->Correcto porque es una recta



------------------Programa 2---------------------------------

>> freq=1;
>> t=0:0.001:0.999;
>> s=sin(2*pi*freq*t);
>> stem(t,s)
>> %Sinusoidal de freq=1hz, adquirido un periodo >>
>> f=fft(s);
>> re=real(f);
>> im=imag(f);
>>
>>%Intento Dibujar i no sale nada correcto
>>
>> plot(im,re)
>> stem(im,re)
>>

---------------------------------------------------------------------------------------------

Muchas gracias a todos y salud    :-)
Anglès (Girona)

Desconectado AnFe

  • PIC10
  • *
  • Mensajes: 43
Re: Dibujar una fft a traves de Matlab
« Respuesta #1 en: 22 de Enero de 2009, 10:03:09 »
El problema es que para representar la parte real e imaginaria, lo tienes que hacer respecto de la frecuencia.
Es decir, tendrías dos gráficas: una de la parte real con respecto a la frecuencia y otra de la parte imaginaria con respecto a la frecuencia.

Por otro lado, estudio Teleco y te puedo decir que la representación de parte real e imaginaria no vale para casi nada. En su lugar se suele representar la magnitud y la fase, que dan una información más clara. Por lo tanto, te recomiendo que sea esa la forma de representar que elijas.

Un saludo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Dibujar una fft a traves de Matlab
« Respuesta #2 en: 22 de Enero de 2009, 13:14:23 »
Para poder graficar el resultado de una FFT hay que absolutizar lo que entrega la función fft().

Código: [Seleccionar]
%calcula fft
recupera=fft(buffout);
bufftemp=abs(recupera); %absolutiza reales e imaginarios

plot(bufftemp);
ylabel('Respuesta a la frecuencia')

El eje y representará la amplitud de la frecuencia. El eje x será la frecuencia de tu señal pero en este caso solo se tabulará el número de muestra del vector bufftemp.

Desconectado arcadi

  • PIC12
  • **
  • Mensajes: 74
Re: Dibujar una fft a traves de Matlab
« Respuesta #3 en: 22 de Enero de 2009, 15:30:05 »
OK.

muchas gracias, es la primera vez que trabajo con FFT y DFT...

Siempre hacia las Furiers con el valor medio, la integral de la señal por el seno, despues con el coseno, etc...


Gracias a todos y salud
Anglès (Girona)