Matlab - Transformada de Fourier indicando unos valores específicos de frecuencia.

   
Vista:

Transformada de Fourier indicando unos valores específicos de frecuencia.

Publicado por Alvaro alsague91@gmail.com (2 intervenciones) el 12/07/2014 13:18:34
Hola buenas,

Tengo un vector de 1000 x 1 valores predeterminado.
Lo que necesito es realizar la transformada de Fourier de este vector para 300 puntos y que estos valores estén acotados entre unas frecuencias de 30000 y 30000000 de Hz.

Realizar la Transformada de Fourier de n puntos es sencillo.
Por ejemplo,:
Y=mi vector;
X=fft(Y,300);

Realiza la transformada de 300 puntos para unas frecuencias de 0 a 299.

Pero, como poder cambiar/acotar este rango de frecuencias y que esos 300 puntos los transforme para unas frecuencias comprendidas entre 30 KHz a 30MHz.

Con un bucle se podría llevar acabo??
No se como implementarlo.

Muchas gracias.
Estoy desesperado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Transformada de Fourier indicando unos valores específicos de frecuencia.

Publicado por Capitan Kirk capitan.kirk09@gmail.com (16 intervenciones) el 15/07/2014 11:36:25
La transformada de Fourier permite obtener las componentes de frecuencia de una señal periódica. Partiendo de una lista de valores, se obtiene una nueva lista de números complejos, cuyo módulo corresponde a la componente a una frecuencia determinada, y su argumento corresponde a la fase. El incremento de frecuencia entre elemento y elemento de la lista se calcula mediante

df = frecuencia_de_muestreo / numero_de_muestras

comenzando por cero.

No termino de entender lo de realizar la transformada para 300 puntos, cuando partes de 1000, ni tampoco lo de la acotación entre 30000 y 30000000 Hz. Quizá si pudieses postear el problema completo, podría aclararte algo más.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Transformada de Fourier indicando unos valores específicos de frecuencia.

Publicado por Alvaro (2 intervenciones) el 15/07/2014 21:40:46
Gracias por el interés mostrado Capitan kirk,

Te detallo un poco más el problema.
El objetivo es realizar cálculos con otras dos variables que ya tengo definidas (H, y la impedancia Z obtenidas con un aparato de medida) en el dominio de la frecuencia, de las cuales tengo 300 puntos tomados un intevalo de frecuencias de 30 KHz a 30 MHz. Para no sumar peras con manzanas, lo que quiero es transformar al dominio de la frecuencia mi vector de valores de tensión (1000 x 1, obtenido a través de un calibrador y un osciloscopio) medido en el dominio del tiempo.

Lo que quiero hacer con Matlab es transformar 300 puntos de mi vector en el mismo rango de frecuencias a la que están medidas Z y H.
No sé si es posible implementar dicho cálculo. Si no es a capón.
Porque lo que se me ha ocurrido es:
Hacer la transformada de 30000000 de puntos de mi vector

Y=mi vector;
X=fft(Y,30000000);

E ir sacando cada valor del módulo a las frecuencias que ya conozco, pues son a las que se han medido los 300 puntos de Z y H.

La frecuencia de muestreo es de 50 Hz, ya que la tensión se midió a la frecuencia estándar, no se varió.

Te comento los siguientes comandos que estoy metiendo:

>> m=calibradortechimp20pc_Ch1; % El vector 1000x1 que recoge los valores de tensión en el dominio del tiempo.
>> beta=fft(m,30000000); % FFT de m para 30000000 de puntos para sea de la misma longitud que el máximo del intervalo de frecuencia.
>> for k=30000:1:30000000 % Rango de frecuencias.
beta0=beta(k); % Para que me calcule el rango que me interesa
end

De esta manera lo que ocurre es que el valor de beta0 es la fft del punto 30000000, es decir ha machacado el resto de puntos y se queda con el ultimo. Sólo te da 1 resultado.

De otra forma:

>> m=calibradortechimp20pc_Ch1; % El vector 1000x1 que recoge los valores de tensión en el dominio del tiempo.
>> beta=fft(m,30000000); % FFT de m para 30000000 de puntos y que sea de la misma longitud que el máximo del intervalo de frecuencia.
>> for k=30000:1:30000000 % Rango de frecuencias.
beta0 (k)=beta(k); % Cambio el beta0 en función de k.
end

De esta forma te lo hace bien, pero no queda mas remedio que ir frecuencia por frecuencia cogiendo las frecuencias conocidas de los 300 puntos de entre 30 KHz y 30 MHz.
Que sería los mismo que hacer:
>> m=calibradortechimp20pc_Ch1;
>> beta=fft(m,30000000);

Si no me he explicado, intento darte algún detalle más.
Muchas gracias de antemano, de verdad.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Transformada de Fourier indicando unos valores específicos de frecuencia.

Publicado por Capitan Kirk capitan.kirk09@gmail.com (16 intervenciones) el 16/07/2014 13:23:43
Tengo la impresión de que estás mezclando las ovejas churras con las merinas. Me explico:

Me dices:

La frecuencia de muestreo es de 50 Hz, ya que la tensión se midió a la frecuencia estándar, no se varió.

Parece que te refieres a la frecuencia de la red eléctrica, pero la frecuencia de muestreo no se refiere a eso (da la impresión de que hayas confundido la frecuencia de muestreo con la frecuencia de la señal muestreada). La frecuencia de muestreo (que mucha gente, yo incluído, la llama así de manera incorrecta) es, en realidad, la velocidad de muestreo, y suele expresarse en muestras por segundo. Es independiente de la(s) frecuencia(s) presente(s) en la señal que quieres examinar, y depende del equipo de medida que utilices. Por ejemplo, si muestreas a una velocidad de 1000 muestras/segundo una señal que tiene una componente de 50 Hz y otra de 300 Hz, en los datos de salida vas a tener 20 puntos/ciclo de la componente de 50 Hz y 3 ó 4 (según toque) de la componente de 300 Hz. Cuando hagas la FFT del vector de entrada (llamando vector a una lista de valores), obtendrías un vector de salida en el que todas las componentes serían nulas, excepto las dos que corresponderían a las frecuencias de 50 y 300 Hz.

Me da la sensación de que lo que tienes es una serie de mediciones de H y Z para algún equipo o dispositivo, obtenidas a distintas frecuencias entre los límites que indicas. En ese caso, lo que tienes es, simplemente, una tabla en la que tienes "para F=XXX Hz tengo H=YYY y Z=ZZZ". Si es eso, lo que tienes es, simplemente, un par de funciones con la frecuencia como variable independiente y H y Z como variables dependientes. Nada que ver con la FFT, que es para obtener las componentes de frecuencia de una señal temporal (o para obtener la señal temporal a partir de las componentes de freecuencia, mediante la FFT inversa).

Si no es así, dame todos los detalles que puedas del problema, a ver si puedo darte alguna indicación.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar