Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Исключение аппаратной функции
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
lire
Добрый день, моя задача лежит в области оптических спектральных измерений, однако является задачей по цифровой обработке сигналов.

Имеется оптический спектр (по абсциссе взяты деления монохроматора, чтобы обеспечить равномерность отсчетов). Он был снят в "идеальных" условиях, и можно считать, что не имеет искажений. Имеется тот же спектр, но снятый уже в неидеальных условиях и потому искаженный. Требуется найти аппаратную функцию, свертка с которой и дает такой искаженный результат, чтобы в дальнейшем ее исключать уже в отсутствие "идеального" спектра.

Из теории оптической спектрометрии известно, что аппаратная функция спектрометра при этих условиях должна быть в виде трапеции, однако попытки делать свертку хорошего спектра и пробных трапеций не дают такого результата, как наш "плохой" спектр. На картинке spectra.png хороший спектр - зеленый, красный - искаженный, а черный - попытка использования в качестве аппаратной функции трапецию (из теории).

Ну и ладно, зачем нам угадывать аппаратную функцию, когда можно ее вычислить. Искаж.спектр = Хор.спектр * Апп.ф., поэтому Апп.ф = IFFT ( FFT(Искаж. сп.) / FFT (Хор. сп.) ). Однако при выполнении этих численных операций аппаратная функция - это просто шум с большой амплитудой, и повторное применение свертки для проверки результата оказывается неверным. По всей видимости, я что-то делаю не так. Комплексные значения FFT обоих сигналов очень похожи, и при комплексном делении одного на другой получается просто шумовая дорожка с большой амплитудой, обратный FFT от которой разумеется тоже неинформативен. Пробовал делать FFT с разными окнами и без него, результаты такие же.

Оба спектра, если кто-то захочет поиграться, приведены в файле spectra.txt (формат CSV).

Заранее благодарен за указание, где ошибка.
bahurin
Если я правильно понял, то красный график это то что вы намерили с искажениями, а зеленый это спектр без искажений, и вы хотите узнать частотную характеристику фильтр, который внес искажения. Если я правильно понял то вам нужно поделить красный график на зеленый, но не комплексные значения спектра а именно амплитудные спектры, тогда вы сможете получить АЧХ фильтра, которые вносит искажения (не комплексный). Тогда если вы в очередной раз будете измерять спектр то вам надо будет поделить результат на полученную АЧХ. ВАЖНО! В идеальном и измеренном спектрах не должно быть нулей, равно как не должно быть нулей в вашей корректирующей АЧХ. Если появляются нули то вы должны следить, чтобы они не оказывались в знаменателе.
lire
bahurin, вы правильно поняли задачу, только на рисунке изображены оптические спектры - в контексте данной задачи лучше называть их "сигналы", чтобы избежать путаницы со спектрами - изображениями сигналов в частотной области.

По вашему совету, я заменил комплексное деление их спектров (FFT) на вещественное деление модулей, однако из-за того, что модули тоже были очень близкими, результат по-прежнему больше всего похож на шум.

Чтобы было понятно, о чем речь, я привел амплитуды FFT-образов обоих сигналов на картинке FFT.png, а на картинке FFT-div.png неприглядный результат деления одного на другое.

Вопрос в интерпретации этого результата: значит ли это, что в связи с большой близостью спектров хорошего и искаженного сигналов, или из-за специфического вида этих спектров, такой метод не работает; либо же я все-таки что-то делаю не так.

Спасибо
bahurin
ваши спектры сосредоточены очень близко к нулю, поскольку сигналы имеют постоянную составляющую. поэтому вы делите по сути хвосты их спектров. Я так понял хвосты нам не интересны. Попробуйте немного растянуть спектры ваших сигналов. Для этого к сигналам добавьте нулей чтобы количество точек бпф стало раз в 16 больше и потом считайте спектры. После того как вы посчитаете спектры вы увидите, что они немного растянутся относительно нуля. А так действительно вы делите очень малые значения на очень малые значения. Это пример некорректной задачи. Можно попробовать покрутить стабилизаторы, чтобы в знаменателе не было нуля. Для этого надо к спектру который в знаменателе добавить неотрицательную, монотонно возрастающую функцию, например a*f^2, где а - постоянный к-т.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.