Buscando un programa de transformación FFT implementado en matlab o lenguaje C

Hola, esta es mi respuesta, espero que te pueda ayudar.

1) Discusión de los resultados

1. Si la señal se somete a una transformación FFT con el mismo número de puntos N, cuanto mayor sea la frecuencia de muestreo fs, mayor será la frecuencia de la señal. ser analizado al mismo tiempo, Cuanto menor sea la frecuencia de muestreo, mejor será la resolución espectral para señales de baja frecuencia.

En segundo lugar, suponiendo que los puntos de muestreo no están en los picos, valles y voltaje 0 de la señal sinusoidal, el espectro producirá fugas.

En tercer lugar, para la misma frecuencia de muestreo fs, aumentar el número de puntos FFT N puede mejorar la resolución del espectro.

En cuarto lugar, si la frecuencia de muestreo fs es menor que 2 veces la frecuencia de la señal 2*fs (teorema de Nyquist), los resultados del análisis del espectro serán incorrectos.

En quinto lugar, el fenómeno de fuga en (2) se puede resolver agregando puntos cero detrás de la señal.

2) Los procedimientos y anotaciones son los siguientes

Borrar la ventana de comandos y las variables

clc

borrar todo

; p>

Ingrese f, N, T, si agregar ceros (cuántos ceros agregar)

f=input('Frecuencia de entrada de la señal: f\n');

N= input('Ingrese el número de puntos: N\n');

T=input('Ingrese el tiempo de muestreo: T\n');

flag =input('¿Agregar cero a la señal de muestreo o no? yes=1 no=0\n');

if(flag)

ZeroNum=input('Ingrese el número de ceros \n');

else

ZeroNum=0;

end

Generar una señal, la señal es la señal original. La señal es la señal de muestreo.

fs=1/T;

t=0: 0.00001: T*(N ZeroNum-1);

señal=sin(2*pi*); f*t);

t2=0: T: T*(N CeroNum-1

señal2=sin(2*pi*f*t2);

if (flag)

signal2=[signal2 zeros(1, ZeroNum)];

end

Dibuja la señal original y la señal muestreada.

figura;

subplot(2, 1, 1);

plot(t, señal

xlabel('Tiempo); (s)');

ylabel('Amplitud(voltios)');

title('Singnal');

espera;

subplot(2, 1, 1);

stem(t2, señal2, 'r');

eje([0 T*(N ZeroNum) -1 1]);

Realice una transformación FFT, calcule su amplitud, normalícela y dibuje el espectro.

Y = fft(señal2, N);

Pyy = Y.* conj(Y

Pyy=(Pyy/suma(Pyy)) *2;

f=0: fs/(N-1): fs/2

subtrama(2, 1, 2); bar(f, Pyy(1:N/2));

xlabel('Frecuencia(Hz)');

ylabel('Amplitud');

title('Componentes de frecuencia de la señal');

axis([0 fs/2 0 ceil(max(Pyy))])

grid on;

¡Buena suerte!