Red de conocimientos turísticos - Información de alquiler - ¿Cómo simular el algoritmo FFT de base dividida y el algoritmo radix-2FFT en matlab?

¿Cómo simular el algoritmo FFT de base dividida y el algoritmo radix-2FFT en matlab?

¿No están fft y 2FFT directamente disponibles 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")

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);

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")

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);

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 ')