Найти частоту синусоидальной волны (matlab)

У меня относительно чистый синусоидальный сигнал (от тонкопленочных помех) - два вектора данных: ось X (разница в длине оптического пути) и ось Y (светятся). Я хочу найти частоту синуса, используя преобразование Фурье (в Matlab). Как я могу это сделать?

Спасибо!

1 ответ

Во-первых, вам нужно использовать одно окно (Хэмминга, Ханна) в вашем сигнале, и теперь все, что вам нужно, это получить максимальное значение из первой половины данных DATA в квадрате, чтобы найти частоту вычисления "частота дискретизации * максимальный индекс / длина DATA:

t  = [ 0 : 1 : 100000];          
f  = 200;        % F0 here           
Fs = 44100;                    
data = sin(2*pi*f/Fs*t)';  
data = data .* hanning(length(data));    
Y = fft(data);    
Mag=abs(Y(1:length(data)/2)).^2;    
[a,b]=max(Mag);    
% Result    
Fs*b/length(data)
Другие вопросы по тегам