Цитата(fontp @ Oct 19 2011, 18:03)

Шум сам по себе не есть ограничение для метода. Шум подавляется в любой степени увеличением числа отсчетов и метод выходит на критерий Крамера-Рао.
Не в любой, конечно... В значительной. Число отсчетов ограничено стабильностью основной частоты, т.е. тем насколько синусоида сама идеальна. Для сильных шумов метод QIFFT исключителен, в том смысле что ВСЕ параметрические методы (из того же Марпла) уже не работают
В очередной раз встречаю какие-то непонятки о кол-ве отсчётов.
Нет, шум не подавляется увеличением числа отсчётов. Даже если синус супер-пупер стабильный. Т.к. кол-во отсчётов ограничено длительностью (ограниченностью) самого сигнала во времени. И из того, что есть, хотелось бы получить максимум шумоустойчивости. Для безшумного сигнала высокая точность не нужна. Наоборот, допустимо её ухудшить, применив не самые точные измерения (например оценку частоты), главное чтобы этот же алгоритм давал лучшие результаты при максимуме шумов, по крайней мере среднестатистическую вероятность правильных результатов. На выходе алгоритма будет от одного до 6 битовый результат. И нужно чтобы опознание было с бОльшей вероятностью правильное. Всего-то.
А вот с интерполяцией FFT хотелось бы найти где-нить теоретическое обоснование того, что в основных бинах FFT содержится так же информация о дробных частотах, по которым их можно интерполировать. Не какой-то набор статистики результатов. Я пока хочу использовать этот метод, но опасаюсь, что может оказаться, что интерполированные значения не всегда достоверны. И например скачут от начальной фазы этой дробной частоты. С другой стороны, синк-интерполяция означает, что эти промежуточные значения "размазаны" по всему спектру FFT. А не по 2-4 соседним точкам.
Upd.
Хотя... Увеличить кол-во отсчётов я могу. Длительность сигнала при этом будет прежней. А вот частоту оцифровки завысить без проблем. В конце спектра при этом будет "пустота". То есть там даже шума не будет, т.к. он круто отфильтрован в аналоге. Но такое увеличение отсчётов "наоборот" даст ли что-то полезное? Вообще, давно задумывался об этом. Но пока не разобрался.
Не могу увеличивать период оцифровки, т.к. полезный сигнал ограничен, а за ним идёт не просто шум, а уже другой сигнал, и, если увеличивать период (а-ля квазидополнение нулевым сигналом), то ИМХО результат будет хуже чем с настоящим дополнением нулями короткого блока сэмплов, т.к. в сэмплах будет уже реальная синусоидальная помеха.
Upd2.
Хорошая вещь, эта интерполяция спектра. При 8-кратном дополнении нулей БПФ по 32*8 точкам выдаёт ошибку в определении амплитуды одной единственной некратной синусоиды без шума максимум в 3% при любой стартовой фазе синусоиды и любой некратной частоте (хотя проверял от 5 до 13 гармоники).
Upd3.
Проверил с шумом. В сигнале (7.57 гармоника)
Re[i] := cos(p * i + pp) + (Random-0.5)*3.0;
при простом БПФ вероятность ошибочно найденного пика 15%, при 8 кратном дополнении нулями ошибка только 4%.
pp это случайная начальная фаза. Из простого БПФ с N=32, пик находится по простому максимуму, без доп. алгоритмов.
В сигнале
Re[i] := cos(p * i + pp) + (Random-0.5)*4.0;
ошибки 36% vs 23%
В сигнале
Re[i] := cos(p * i + pp) + (Random-0.5)*5.0;
ошибки 52% vs 46%
Ну хоть для чего-то этот алгоритм (дополнения нулями) сгодился

То есть при больших шумах, до какого-то порога даёт лучшие вероятности, да ещё и с одновременным определением некратной частоты.
Upd4.
Маленький минус всё-таки нашёлся. При не очень больших шумах. В сигнале (7.00 гармоника)
Re[i] := cos(p * i + pp) + (Random-0.5)*2.5;
БПФ работает немного лучше. В обоих случаях ошибок менее 1%. Но в БПФ их меньше в 2..3 раза.
Ещё гораздо больший минус. В сигнале (7.00 гармоника)
Re[i] := cos(p * i + pp) + (Random-0.5)*3.5;
ошибки 8% vs 15%. Но на 7.2 гармонике уже вероятности примерно равны около 14%.
И что меня совсем удивило, так это стабильная вероятность ошибки интерполированного пика при любых дробных/недробных частотах. А это свойство для того, где я хочу применить алгоритм просто ценнейшее, потому как нет разделения на удачные и неудачные частоты. Они все равноценны.