Zamieszanie w określaniu relacji między rzeczywistymi wartościami częstotliwości a indeksami FFT w MATLAB

Wiem, że jest wiele podobnych pytań, wciąż nie jestem w stanie znaleźć odpowiedzi. Powiedzmy, że mamy sygnał czasu w MATLABIE:

t=0:1/44100:1

i sygnał kosinusowy o częstotliwości 500 Hz:

x=cos(2*pi*500*t);

Teraz próbuję wykreślić widmo wielkości uzyskane za pomocąfft polecenie na sygnał x

FFT=abs(fft(x))
plot(FFT)

Zgodnie z teorią powinniśmy uzyskać dwa piki na wykresie, jeden przy -500 Hz, a drugi przy 500 Hz. Nie rozumiem jednak, że dostaję dwa piki, ale nie wiem, na jakich częstotliwościach te szczyty są. Wiem, że istnieje sposób na określenie częstotliwości za pomocą indeksu FFT, długości sygnału wejściowego i częstotliwości próbkowania, ale nadal nie mogę obliczyć częstotliwości.

Wiem, że istnieją metody wyrównywania wykresów FFT, tak aby piki znajdowały się pod numerem indeksu częstotliwości, którą reprezentują, używającfftshift funkcja, ale chcę określić częstotliwość za pomocą wykresu wynikającego po prostu z wywołania tej funkcji:

FFT=fft(x)

W tym przypadku już wiem, że sygnał zawiera cosinus 500 Hz, ale co jeśli sygnał, który chcemy uzyskać FFT, nie jest znany przed czasem. Jak możemy uzyskać wartości częstotliwości pików w tej próbce przy użyciu danych wyjściowych zfft funkcjonować?

questionAnswers(2)

yourAnswerToTheQuestion