#matlab #fft
#matlab #БПФ
Вопрос:
Я работаю над системой управления, которая измеряет движение вибрирующей руки робота. Поскольку есть некоторое время простоя, мне нужно заглянуть в будущее несколько зашумленного сигнала. Моя идея состояла в том, чтобы использовать частоты в дискретизированном сигнале и создать функцию Фурье, которую можно было бы использовать для экстраполяции.
Мой вопрос: у меня уже есть БПФ вектора сигнала (содержащий, например, 60-100 значений) и я могу видеть основные частоты в амплитудном спектре. Теперь я хочу иметь функцию f (t), которая соответствует сигналу, удаляет некоторый шум и может использоваться для прогнозирования ближайшего будущего сигнала. Как мне вычислить коэффициенты для функций синуса / косинуса из комплексных данных БПФ?
Большое вам спасибо!
Комментарии:
1. Возможно, вы захотите попробовать задать этот вопрос на dsp.stackexchange.com поскольку это больше связано с DSP, чем с программированием
2. Хорошо, я не знал об этом сайте! Я попробую это там!
Ответ №1:
AFAIR FFT по существу выдает выходные данные в виде суммы синусоидальных функций с разными частотами. Важность каждой частоты определяется высотой каждого пика. Итак, что вы действительно хотите здесь сделать, это отфильтровать некоторые частоты (т. е. высокие частоты, чтобы рука двигалась мягко), а затем вернитесь во временную область.
В matlab это должно быть похоже на прохождение вектора того, что вы получили от БПФ, установив для некоторых значений значение 0 (или выполнив с ним что-то более сложное), а затем использовать ifft, чтобы вернуться во временную область и сделать прогноз на основе того, что вы получаете.
При этом также следует учитывать одну вещь — частоту Найквиста — это означает, что самая высокая частота, которую вы получаете на своем БПФ, составляет половину частоты дискретизации.
Ответ №2:
Если вы используете БПФ для данных, которые не являются периодическими в пределах длины апертуры БПФ, то вам может потребоваться использовать окно для уменьшения ложных частот из-за «спектральной утечки». Методы оценки частоты для лучшей оценки частотного содержимого «между ячейками» также могут быть подходящими. Фаза каждой синусоиды косинуса относительно края окна обычно равна atan2(imag [i], real [i]). Частота зависит от частоты дискретизации и номера ячейки в зависимости от длины БПФ.
Возможно, вы также захотите изучить возможность использования фильтра Калмана вместо БПФ.
Добавлено: если ваш сигнал не является точно целочисленным периодическим по длине БПФ, то вы можете захотеть выполнить сдвиг БПФ перед БПФ, чтобы переместить результирующую контрольную точку измерения фазы в центр вашего вектора данных вместо возможного прерывистого кругового края.