Cómo entender la transformada de Fourier en MATLAB ¿Cómo se puede ver la frecuencia en el cálculo final del siguiente código?
El espectro en el dominio del tiempo y el espectro en el dominio de la frecuencia se corresponden entre sí
La longitud de la señal en el dominio del tiempo determina el intervalo de muestreo en el dominio de la frecuencia y forman una relación derivativa p>
La señal en el dominio tiene N puntos, y cada punto está separado por dt, por lo que la longitud de la señal en el dominio del tiempo es N*dt
Entonces el intervalo entre cada punto del espectro es 1/(N*dt)
Fourier El resultado de la transformación tiene el mismo número de puntos que la señal original, por lo que m=N
Y el primer punto debe corresponder a la frecuencia 0 , entonces
Las coordenadas de la señal en el dominio de la frecuencia son (0: m -1)/(N*dt)
Esta oración se basa en esta misma coordenada y espectro c, dibuja el gráfico del espectro ((0:m-1)/(N*dt), c);
Entonces, en el espectrograma, la frecuencia correspondiente se puede leer de acuerdo con la abscisa de la posición del pico
borrar todo;
N=256; dt=0.02;
n=0:N-1; x=sin(2*pi*t);
m=N;
a=ceros(1,m); >
para k=0:m-1
para ii= 0: N-1
a(k 1)=a(k 1) 2/N*x (ii 1)*cos(2*pi*k*ii/N);
b(k 1)=b(k 1) 2/N*x(ii 1)*sin(2* pi*k*ii/N);
end
c(k 1)=sqrt(a(k 1)^2 b(k 1)^2 ); p>
end
subplot(211); plot(t, x); título ('señal original'), xlabel ('tiempo/t'); =(0:m-1)/(N*dt);
subplot(212); trama(f, c); espera
title('Fourier'); xlabel('frequency/HZ'); ylabel('amplitude');
ind=find(c==max(c), 1, 'first'); Encuentra la posición del valor más alto
x0=f(ind); Obtiene la abscisa (frecuencia) según la posición
p>y0=c(ind); Obtiene la coordenada vertical (amplitud) según la posición.
plot(x0, y0, 'ro'); retrasar
text(x0 1, y0-0.1, num2str(x0,'frequency=f')); p>