Problema calculando DFT
Publicado por Adrián (1 intervención) el 29/04/2015 12:00:16
Hola,
tengo un problema al calcular la transformada discreta de Fourier para una señal cuadrada, al ver la magnitud de las frecuencias obtenidas obtengo un pequeño ruido para frecuencias en las que la amplitud debería de ser 0, para calcular la DFT utilizo una función propia, aquí está el código:
Sé que seguramente la implementación no será la más eficiente sin duda y sería mejor utilizar las funciones proporcionadas por matlab, pero es para una práctica de una asignatura y nos piden implementarla.
El código que utilizo para generar la señal cuadrada es:
La versión de matlab que uso es la R2013a(8.1.0.604) 64 bits
Llevo una semana usando matlab así que todavía estoy bastante verde siento si la pregunta es estúpida pero he estado buscando y no he encontrado nada que lo resuelva espero que alguien por aquí me pueda ayudar.
Un saludo y gracias de antemano.
tengo un problema al calcular la transformada discreta de Fourier para una señal cuadrada, al ver la magnitud de las frecuencias obtenidas obtengo un pequeño ruido para frecuencias en las que la amplitud debería de ser 0, para calcular la DFT utilizo una función propia, aquí está el código:
1
2
3
4
5
6
7
8
9
function [y] = Discrete_Fourier_Transform(x)
N=length(x);
y=zeros(1,N);
for k = 1:N
for n = 1:N
y(k) = y(k) + x(n)*exp( -1j*2*pi*(n-1)*(k-1)/N );
end;
end;
end
Sé que seguramente la implementación no será la más eficiente sin duda y sería mejor utilizar las funciones proporcionadas por matlab, pero es para una práctica de una asignatura y nos piden implementarla.
El código que utilizo para generar la señal cuadrada es:
1
2
3
4
x = [ones(1,8), -ones(1,8)];
for i=1:63
x = [x, ones(1,8), -ones(1,8)];
end
La versión de matlab que uso es la R2013a(8.1.0.604) 64 bits
Llevo una semana usando matlab así que todavía estoy bastante verde siento si la pregunta es estúpida pero he estado buscando y no he encontrado nada que lo resuelva espero que alguien por aquí me pueda ayudar.
Un saludo y gracias de antemano.
Valora esta pregunta


0