Найти частоту синусоидальной волны (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)