Проблема, которую вы видите, связана с «псевдонимом данных» из-за ограничений возможности БПФ обнаруживать частоты выше Частота Найквиста (половина частоты дискретизации) .
При использовании псевдонимов данных, пик реальной частоты будет центрироваться вокруг (реальная частота по модулю частота Найквиста). В вашей выборке 20 Гц (при условии, что 70 Гц является истинной частотой, это приводит к нулевой частоте, что означает, что вы не видите реальную информацию. Одна вещь, которая может помочь вам в этом, - это использовать FFT «управление окнами».
Другая проблема, с которой вы можете столкнуться, связана с генерацией зашумленных данных с помощью измерения с одним БПФ. Лучше взять много данных, использовать окна с перекрытием, и убедиться, что у вас есть как минимум 5 БПФ, которые вы усредняете, чтобы найти свой результат. Как упоминал Стивен Лоу, вы должны также делать выборки более быстрыми темпами, если это возможно. Я бы порекомендовал сэмплировать с максимальной скоростью, которую могут сэмплировать ваши инструменты.
Наконец, я бы порекомендовал вам прочитать некоторые выдержки из Числовые рецепты на C (<- link): </p>
Вам не нужно читать исходный код на C - только объяснения. Числовые Рецепты для C имеет превосходную сжатую информацию по теме.
Если у вас есть еще вопросы, оставьте их в комментариях. Я постараюсь ответить на них как можно лучше.
Удачи!