Отказ от ответственности: я не эксперт по обработке сигналов.
Я пишу функцию, которая берет одномерный массив и выполняет на нем быстрое преобразование Фурье. Вот как это работает:
- Если размер массива не является степенью двойки, дополните его нулями в конце, чтобы его размер стал степенью двойки.
- Выполните БПФ над заполненным массивом и сохраните результаты в массиве
x
. - Уменьшите размер сложного массива
x
, чтобы он соответствовал длине исходного незаполненного массива. - Вернуть
x
.
У меня возникли проблемы с шагом 3. Если я пропущу шаг 3 и выполню обратное БПФ для результата вызова функции, я получу начальный заполненный массив, что означает, что функция успешно выполняет шаги 1 и 2.
Я попытался реализовать шаг 3 путем понижения дискретизации с использованием линейной интерполяции, но когда я выполнил обратное преобразование Фурье для конечного результата с помощью MatLab, полученные результаты не были эквивалентны исходному массиву. Язык программирования, который мне нужно использовать, не MatLab, я использую MatLab только для проверки правильности результатов.
Какие методы можно использовать для выполнения шага 3, сохраняя при этом возможность получить исходный массив без дополнений после обратного БПФ?