А как быть с тем, что при разложении сигнала в спектр по, например, 256 гармоникам, точное определение частоты будет просто невозможно из-за большой дискретности по частотам?
Ну, например, сигнал имеет частоту, отличную от тех, по которым производится разложение в спектр? раскладываем по частотам 1, 2, 3, ..., 256 Гц, а сигнал имеет частоту 55,45 Гц. На разложении будет один пик на 55 Гц, но определить по нему частоту нельзя, потеряем 0,45 Гц, то есть погрешность большая будет. Тут писали про центр тяжести по двум соседним частотам, но как что-то усреднить, если пик всего один на частоте 55 Гц, а на частотах 54 и 56 Гц амплитуда очень незначительная. Вот пример из матлаба.
Код
Fs = 20000; % Sampling frequency
T = 1/Fs; % Sample time
L = 256; % Length of signal
t = (0:L-1)*T; % Time vector
y = 0.7*sin(2*pi*55*t); %Sinus 55 Hz
Y=fft(y);
subplot(1,1,1);
plot(y,t);
title('Спектр сигнала y')
xlabel('Частота (Hz)')
ylabel('|Y(f)|')
subplot(2,1,2);
plot(f,2*abs(Y(1:L/2+1)))
title('Спектр сигнала y')
xlabel('Частота (Hz)')
ylabel('|Y(f)|')
Ниже прикреплен файл с сигналом и разложением в спектр. Две соседние частоты 78,13 и 156,3 Гц, а заданная частота сигнала - 55 Гц. Как правильно определить частоту сигнала из такого спектра?
Сообщение отредактировал CTPEXHIH - Nov 13 2011, 08:41
Эскизы прикрепленных изображений