La Red de Conocimientos Pedagógicos - Currículum vitae - 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?

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

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

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