Реализация периодограммы Ломба-Скарлга
С официального сайта matlab периодограмма Ломба-Скарлга определяется как
http://www.mathworks.com/help/signal/ref/plomb.html
Предположим, у нас есть некоторый случайный сигнал, скажем,
x=rand(1,1000);
среднее значение этого сигнала может быть легко реализовано как
средний = среднее (х); Дисперсия может быть реализована как
>> average_vector=repmat(average,1,1000);
>> diff=x-average_vector;
>> variance= sum(diff.*diff)/(length(x)-1);
как мне продолжить? я имею ввиду как выбрать частоты? Расчет смещения времени не является проблемой, давайте предположим, что у нас есть вектор времени
t=0:0.1:99.9;
так, чтобы общая длина вектора времени была 1000, в общем случае для DFT, частотные бины представляются как множитель 2*pi/N, где N - длина сигнала, но как насчет этого случая? заранее спасибо
1 ответ
Как видно из приведенной ссылки на документацию MATLAB, алгоритм не зависит от конкретного времени выборки tk выбора. Обратите внимание, что для одинаково разнесенного времени выборки (как вы выбрали), та же ссылка указывает:
Смещение зависит только от времени измерения и исчезает при одинаковом расстоянии.
Итак, как вы выразились, "расчет смещения времени не проблема".
Подобно ДПФ, который можно получить из дискретного преобразования Фурье (DTFT), выбрав дискретный набор частот, мы также можем выбрать f[n] = n * sampling_rate/N
(где sampling_rate = 10
для вашего выбора тк). Если мы игнорируем значение PLS(f [n]) для n=mN
где m
любое целое число (так как его значение является некорректным, по крайней мере, в формуле, размещенной в ссылке), тогда:
Таким образом, для реальных значений данных:
где Y
может быть выражено в терминах diff
вектор, который вы определили как:
Y = fft(diff);
Тем не менее, как указано в википедии, метод Ломба-Скаргла в основном предназначен для использования с неравномерно расположенными данными.