2008-10-05 6 views
6

Estamos tratando de analizar el flujo alrededor del cilindro circular y tenemos un conjunto de valores de Cp que obtuvimos del experimento del túnel de viento. Inicialmente, comenzamos con una frecuencia de muestreo de 20 Hz e intentamos encontrar la frecuencia de desprendimiento de vórtices utilizando FFT en matlab. Tenemos una frecuencia de alrededor de 7 Hz. A continuación, hicimos el mismo experimento, pero lo único que cambiamos fue la frecuencia de muestreo: de 20 Hz a 200 Hz. Obtuvimos la frecuencia del desprendimiento de vórtices en torno a los 70 Hz (aquí es donde se ubica el pico en el gráfico). El gráfico no cambia independientemente de los datos de Cp que ingresamos. El único momento en que el pico difiere es cuando cambiamos la frecuencia de la muestra. Parece que el aumento en la frecuencia del desprendimiento de vórtices es proporcional a la frecuencia de la muestra y esto no parece tener ningún sentido. Cualquier ayuda con respecto al establecimiento de una relación entre la frecuencia de la muestra y la frecuencia de desprendimiento de vórtices se vería muy apreciada.matlab FFT. Relación de comprensión atascada entre la frecuencia y el resultado

Respuesta

0

Eche un vistazo a this pregunta relacionada. A pesar de que inicialmente se le preguntó sobre preguntó sobre VB las respuestas son genéricamente sobre FFT

4

esto probablemente no es un problema de programación, suena como un problema de experimento de medición

creo que la frecuencia de muestreo tiene que ser al menos dos veces la frecuencia de oscilación; de lo contrario, obtienes artefactos; esto podría explicar la diferencia. Tenga en cuenta que la relación de la frecuencia de FFT a la frecuencia de muestreo es de 0,35 en ambos casos. ¿Puedes repetir el experimento con tasas de muestreo más altas? Estoy pensando que si se trata de un cilindro estrecho con viento fuerte, puede vibrar/oscilar más rápido de lo que la velocidad de muestreo puede detectar ...

Espero que esto ayude - hay un 97.6% de probabilidades de que no lo haga sé de lo que estoy hablando ;-)

11

El problema que está viendo está relacionado con "aliasing de datos" debido a las limitaciones de la FFT que puede detectar frecuencias superiores a la Nyquist Frequency (mitad de la frecuencia de muestreo).

Con aliasing de datos, un pico en la frecuencia real se centrará alrededor (frecuencia real módulo frecuencia Nyquist). En su muestreo de 20 Hz (suponiendo que 70 Hz es la frecuencia real, eso da como resultado una frecuencia cero, lo que significa que no está viendo la información real. Una cosa que puede ayudarlo es utilizar FFT "ventana".

Otro problema que puede experimentar está relacionado con la generación de datos ruidosos a través de la medición de FFT única. Es mejor tomar muchos datos, usar ventanas con solapamiento y asegurarse de tener al menos 5 FFT que promedia para encontrar el resultado. Steven Lowe mencionó que también debería probar a mayor velocidad si es posible. Recomendaría muestrear a la velocidad más rápida que sus instrumentos puedan muestrear.

Por último, le recomiendo que lea algunos extractos del Numerical Recipes in C (< - enlace):

No es necesario leer el código fuente en C - sólo las explicaciones. Numerical Recipes for C tiene una excelente información condensada sobre el tema.

Si tiene más preguntas, déjelas en los comentarios. Trataré de hacer mi mejor esfuerzo al responderles.

¡Buena suerte!

2

Si no es un problema de aliasing, parece que podría estar trazando la respuesta de frecuencia en una escala de frecuencia normalizada, que cambiará con la frecuencia de muestreo. Aquí está un ejemplo de una razonablemente buena manera de trazar una respuesta de frecuencia de una señal en Matlab:

Fs = 100; 
Tmax = 10; 
time = 0:1/Fs:Tmax; 
omega = 2*pi*10; % 10 Hz 
signal = 10*sin(omega*time) + rand(1,Tmax*Fs+1); 

Nfft = 2^8; 
[Pxx,freq] = pwelch(signal,Nfft,[],[],Fs) 
plot(freq,Pxx) 

Tenga en cuenta que la frecuencia de muestreo debe ser aprobada explícitamente al comando pwelch con el fin de dar salida a los datos de frecuencia “reales”. De lo contrario, cuando cambie la frecuencia de muestreo, el contenedor donde se produce la resonancia parecerá cambiar, lo cual es similar al problema que describe.

0

He intentado usar el código de respuesta de frecuencia como el anterior pero parece que no tengo la caja de herramientas apropiada en Matlab. ¿Hay alguna manera de hacer lo mismo sin usar el comando fft? Hasta ahora, esto es lo que tengo:

% FFT Algorithm 

Fs = 200;      % Sampling frequency 
T = 1/Fs;      % Sample time 
L = 65536;     % Length of signal 
t = (0:L-1)*T;    % Time vector 
y = data1;     % Your CP values go in this vector 

NFFT = 2^nextpow2(L); % Next power of 2 from length of y 
Y = fft(y,NFFT)/L; 
f = Fs/2*linspace(0,1,NFFT/2); 

% Plot single-sided amplitude spectrum. 
loglog(f,2*abs(Y(1:NFFT/2))) 
title(' y(t)') 
xlabel('Frequency (Hz)') 
ylabel('|Y(f)|') 

creo que podría haber algo mal con el código que estoy utilizando. No estoy seguro de que sin embargo.

+0

Es mejor editar su pregunta original que publicar una "respuesta" con una nueva pregunta. –

0

Un colega mío ha escrito algunas buenas funciones con licencia GPL para el análisis espectral: http://www.mecheng.adelaide.edu.au/~pvl/octave/

(actualización: este código es ahora parte de uno de los módulos de octava:.
http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/signal/inst/
Pero puede ser complicado extraer solo las piezas que necesita de allí.)

Están escritos tanto para Matlab como para Octave y sirven principalmente como un reemplazo directo para las funciones análogas en Signal Processing Toolbox. (Por lo tanto, el code above debería funcionar bien).

Puede ayudar con su análisis de datos; mejor que tirar el tuyo con fft y similares.

2

Creo que es necesario leer un poco sobre el procesamiento digital de la señal antes de que pueda comenzar a comprender todos los matices de la DFT (FFT). Si yo fuera tú, me llegar a tierra en ella por primera vez con este gran libro:

Discrete-Time Signal Processing

Si quieres más de un tratamiento matemático que realmente va a ampliar sus capacidades,

Fourier Analysis by Körner

Cuestiones relacionadas