¿Cómo simular el algoritmo FFT de base dividida y el algoritmo radix-2FFT en matlab?
¿Necesitas reescribir? Luego verifique el archivo fft.m.
FFT de señales en Matlab
31 de agosto de 2010
Robert Francis
rpf100020@utdallas.edu
Definir vector de tiempo
Frecuencia de muestreo = 1000 Hertz
paso de tiempo = 1/frecuencia de muestreo
t = 1; ; segundos
S = T * frecuencia de muestreo; muestras
Muestras = 1: S; muestras
Tiempo = muestras * paso de tiempo
Generar onda sinusoidal
Frecuencia 1 = 5 Hercios
Frecuencia 2 = 7; Hercios
Onda sinusoidal = sin(tiempo*frecuencia 1*2 *pi) sin(tiempo*frecuencia 2*2*pi);
Figura (1), Figura (tiempo, onda sinusoidal, ' r ')
xlabel( 'Tiempo ( segundos)')
ylabel("amplitud")
Título(['Con' num2str(frequency1) 'Hz y' num2str(frequency2) 'Hz'] de la sinusoide original )
set(gca, 'YLim', [-2.1 2.1])
Transformada rápida de Fourier de la onda sinusoidal
L = longitud (onda sinusoidal) ;
nfft = 2^nextpow2(l); la siguiente potencia de 2 de la longitud de la señal
FsineWave = fft(onda sinusoidal, NFFT)/L;
f = frecuencia de muestreo/2 * Lin space(0, 1, NFFT/2 1);
Dibuja el espectro de amplitud de un solo lado.
Figura, trazado(f, 2*ABS(FsineWave(1:NFFT/2 1)))
Título("Espectro de amplitud unilateral de onda sinusoidal") p >
xlabel('Frecuencia (Hz)')
y label(' |Onda sinusoidal (f)| ')
Generar onda cuadrada
Frecuencia de pulso = 8 Hercios
ondacuadrada = cuadrado(tiempo*frecuencia de pulso*2*pi);
Posondaondacuadrada =(ondacuadrada 1)/2;
gráfico, trazado(tiempo, posición de onda cuadrada, ' r ')
set(gca, 'YLim', [-0.1.1.1])
Transformada rápida de Fourier de onda cuadrada
L = longitud (onda cuadrada);
nfft = 2^nextpow2(l); la siguiente potencia de 2 de la longitud de la señal
FsqWave = fft); (onda cuadrada, NFFT)/L;
f = frecuencia de muestreo/2 * espacio Lin(0, 1, NFFT/2 1);
Dibuja el espectro de amplitud de un solo lado .
Figura, trazado(f, 2*ABS(fsq wave(1:NFFT/2 1)))
Título("Espectro de amplitud unilateral de onda cuadrada")
p>xlabel('Frecuencia (Hz)')
ylabel('|SquareWave(f)| ')
Figura diagrama de fases unilateral
Figura, trazado(f, fase(FsqWave(1:NFFT/2 1)))
Título("Espectro de fase de onda cuadrada de un solo lado")
xlabel ('Frecuencia (Hz)')
ylabel('Phase(Y(f))')
Trazar gráficos de amplitud y fase
en el mismo gráfico ,
p>
Subtrama(2,1,1),plot(f,2*ABS(fsq wave(1:NFFT/2 1)))
Título ("Lado único del espectro de amplitud de onda cuadrada")
xlabel('Frecuencia (Hz)')
ylabel('|SquareWave(f)| ')
Subtrama (2, 1, 2), plot(f, fase(fsq wave(1:NFFT/2 1)))
Título("Espectro de fase unilateral de onda cuadrada")
xlabel ('Frecuencia (Hz)')
ylabel('Fase(onda cuadrada (f))')
Decibelios
Magnitud = 2 * ABS( fsq wave(1:NFFT/2 1));
dbs = 20*log10(magnitud);
dbs_anotherWay = mag2db(magnitud); p>
dbs _ stillAnotherWay = pow2db (magnitud); Nota: 10*log10 (magnitud)
Imagen,
Gráfico de rama (2, 1, 1), gráfico ( f, dbs)
Title("Espectro de amplitud unilateral de onda cuadrada")
xlabel('Frecuencia (Hz)')
ylabel(' |SquareWave( f)| (db)')
Subplot(2,1,2), plot(f,phase(fsq wave(1:NFFT/2 1)))
Título("Espectro de fase de onda cuadrada de un solo lado")
xlabel('Frecuencia (Hz)')
ylabel('Fase(Y(f))')
Agregar ruido a la onda cuadrada
noisySqW = squareWavePos 3 * randn(size(squareWavePos));
Gráfico, plot(time, noiseSqW), xlabel( "tiempo (segundos)"), ylabel("amplitud")
Transformada de Fourier de noiseSqW
L = longitud (noisySqW);
nfft = 2^ nextpow2(l); la siguiente potencia de 2 de la longitud de la señal
FnsqWave = fft(noisySqW, NFFT)/L;
f = frecuencia de muestreo/2 * Lin space(0) , 1, NFFT/2 1);
Transformada de Fourier de ruido de gráfico
Gráfico,
Subtrama (2, 1, 1), trama (f, 2 * ABS(FnsqWave(1:NFFT/2 1)))
Título("Espectro de amplitud unilateral de onda cuadrada")
xlabel('Frecuencia (Hz)')
ylabel('|Onda cuadrada(f)|
')
Subplot(2, 1, 2), plot(f, fase(FnsqWave(1:NFFT/2 1)))
Title("Onda única de onda cuadrada "Espectro de fase de borde")
xlabel('Frecuencia (Hz)')
ylabel('Fase(Y(f))')
Transformada de Fourier de la Transformación del pulso
impulso =[0 0 0 0 0 1 0 0 0 0 0];
L = longitud (impulso);
nfft = 2^nextpow2 (l); La siguiente potencia de 2 de la longitud de la señal
Fimpulse = fft(pulse, NFFT)/L;
Gráfico, dibujo (abs(Fimpulse))
Transformada de Fourier de señal CC
DC = dígito de unidades (1, 1000);
L = longitud (DC); nfft = 2^ nextpow2(l); la siguiente potencia de 2 de la longitud de la señal
FDC = fft(DC, NFFT)/L;
DC2 = piezas (1, 100000) );
L2 = longitud (DC2);
nfft 2 = 2^nextpow2(l2); la siguiente potencia de 2 de la longitud de la señal
FDC2); = fft(DC2,nfft 2)/L2;
Vector de frecuencia arbitraria
f1 = linspace(0, 1, longitud (FDC));
f2 = linspace(0, 1 , longitud (FD C2));
Figura, dibujar(f1, abs(FDC), 'b'), mantener, dibujar(f2, abs(FDC2), 'r ')
2FFT
FFT de señal en Matlab
31 de agosto de 2010
Robert ·Francis
rpf100020@utdallas.edu
Definir vector de tiempo
Frecuencia de muestreo = 1000 Hz<; /p>
paso de tiempo = 1/frecuencia de muestreo; segundo
t = 1; segundo
S = T *frecuencia de muestreo
muestra = 1:S; Muestra
Tiempo = muestra * paso de tiempo; segundos
Generar onda sinusoidal
Frecuencia 1 = 5 Hercios
>Frecuencia 2 = 7; Hercios
Onda sinusoidal = sin(tiempo*frecuencia 1*2*pi) sin(tiempo*frecuencia 2*2*pi);
Figura (1 ), Figura (tiempo, onda sinusoidal, ' r ')
xlabel('tiempo (segundos)')
ylabel("amplitud")
título (['con sinusoide original con ' num2str(frequency1) 'Hz y ' num2str(frequency2) 'Hz']
set(gca, 'YLim', [-2.1 2.1])
Transformada rápida de Fourier de onda sinusoidal
L = longitud (onda sinusoidal);
nfft = 2^nextpow2(l); la siguiente potencia de 2 de la longitud de la señal
p>FsineWave = fft(onda sinusoidal, NFFT)/L;
f = frecuencia de muestreo/2 * Espacio Lin(0, 1, NFFT/2 1);
Dibujar espectro de amplitud unilateral.
Figura, trazado(f, 2*ABS(FsineWave(1:NFFT/2 1)))
Título("Espectro de amplitud unilateral de onda sinusoidal") p >
xlabel('Frecuencia (Hz)')
y label(' |Onda sinusoidal (f)| ')
Generar onda cuadrada
Frecuencia de pulso = 8 Hercios
ondacuadrada = cuadrado(tiempo*frecuencia de pulso*2*pi);
Posondaondacuadrada =(ondacuadrada 1)/2;
gráfico, trazado(tiempo, posición de onda cuadrada, ' r ')
set(gca, 'YLim', [-0.1.1.1])
Transformada rápida de Fourier de onda cuadrada
L = longitud (onda cuadrada);
nfft = 2^nextpow2(l); la siguiente potencia de 2 de la longitud de la señal
FsqWave = fft); (onda cuadrada, NFFT)/L;
f = frecuencia de muestreo/2 * espacio Lin(0, 1, NFFT/2 1);
Dibuja el espectro de amplitud de un solo lado .
Figura, trazado(f, 2*ABS(fsq wave(1:NFFT/2 1)))
Título("Espectro de amplitud unilateral de onda cuadrada")
p>xlabel('Frecuencia (Hz)')
ylabel('|SquareWave(f)| ')
Figura diagrama de fases unilateral
Figura, trazado(f, fase(FsqWave(1:NFFT/2 1)))
Título("Espectro de fase de onda cuadrada de un solo lado")
xlabel ('Frecuencia (Hz)')
ylabel('Phase(Y(f))')
Trazar gráficos de amplitud y fase
en el mismo gráfico ,
p>
Subtrama(2,1,1),plot(f,2*ABS(fsq wave(1:NFFT/2 1)))
Título ("Lado único del espectro de amplitud de onda cuadrada")
xlabel('Frecuencia (Hz)')
ylabel('|SquareWave(f)| ')
Subtrama (2, 1, 2), plot(f, fase(fsq wave(1:NFFT/2 1)))
Título("Espectro de fase unilateral de onda cuadrada")
xlabel ('Frecuencia (Hz)')
ylabel('Fase(onda cuadrada (f))')
Decibelios
Magnitud = 2 * ABS( fsq wave(1:NFFT/2 1));
dbs = 20*log10(magnitud);
dbs_anotherWay = mag2db(magnitud); p>
dbs _ stillAnotherWay = pow2db (magnitud); Nota: 10*log10 (magnitud)
Imagen,
Gráfico de rama (2, 1, 1), gráfico ( f, dbs)
Title("Espectro de amplitud unilateral de onda cuadrada")
xlabel('Frecuencia (Hz)')
ylabel(' |SquareWave( f)| (db)')
Subplot(2, 1, 2), plot(f, fase(fsq wave(1:NFFT/2 1)))
Título("Espectro de fase de onda cuadrada de un solo lado")
xlabel('Frecuencia (Hz)')
ylabel('Fase(Y(f))')
Agregar ruido a la onda cuadrada
noisySqW = squareWavePos 3 * randn(size(squareWavePos));
Gráfico, plot(time, noiseSqW), xlabel( "tiempo (segundos)"), ylabel("amplitud")
Transformada de Fourier de noiseSqW
L = longitud (noisySqW);
nfft = 2^ nextpow2(l); la siguiente potencia de 2 de la longitud de la señal
FnsqWave = fft(noisySqW, NFFT)/L;
f = frecuencia de muestreo/2 * Lin space(0) , 1, NFFT/2 1);
Transformada de Fourier de ruido de gráfico
Gráfico,
Subtrama (2, 1, 1), trama (f, 2 * ABS(FnsqWave(1:NFFT/2 1)))
Título("Espectro de amplitud unilateral de onda cuadrada")
xlabel('Frecuencia (Hz)')
ylabel('|Onda cuadrada(f)|
')
Subplot(2, 1, 2), plot(f, fase(FnsqWave(1:NFFT/2 1)))
Title("Onda única de onda cuadrada "Espectro de fase de borde")
xlabel('Frecuencia (Hz)')
ylabel('Fase(Y(f))')
Transformada de Fourier de la Transformación del pulso
impulso =[0 0 0 0 0 1 0 0 0 0 0];
L = longitud (impulso);
nfft = 2^nextpow2 (l); La siguiente potencia de 2 de la longitud de la señal
Fimpulse = fft(pulse, NFFT)/L;
Gráfico, dibujo (abs(Fimpulse))
Transformada de Fourier de señal CC
DC = dígito de unidades (1, 1000);
L = longitud (DC); nfft = 2^ nextpow2(l); la siguiente potencia de 2 de la longitud de la señal
FDC = fft(DC, NFFT)/L;
DC2 = piezas (1, 100000) );
L2 = longitud (DC2);
nfft 2 = 2^nextpow2(l2); la siguiente potencia de 2 de la longitud de la señal
FDC2); = fft(DC2,nfft 2)/L2;
Vector de frecuencia arbitraria
f1 = linspace(0, 1, longitud (FDC));
f2 = linspace(0, 1 , longitud (FD C2));
Figura, dibujar(f1, abs(FDC), 'b'), mantener, dibujar(f2, abs(FDC2), 'r ')