MATLAB: Использование ifft() для деконволюции сигнала и частотной характеристики

У меня есть измеряемый во времени сигнал, который, как известно, имеет переменную частотную характеристику (у меня есть данные частоты и чувствительности для измерительного устройства). Я хочу деконволвить с помощью:

pt = ifft(fft(vt)./Mf)

где vt - изменяющийся во времени сигнал, а Mf - частотная характеристика.

Я принимаю величину

abs(fft(vt))

и разделить на частоту. Кривая отклика Mf (интерполяция в тот же диапазон частот).

Однако, если я установлю Mf=1 (для всех значений от f=0 до n МГц), я не получу исходный сигнал vt, когда я делаю ifft.

Насколько я понимаю, мне нужно выполнить деление (fft(vt)./Mf), используя величину vt fft (так как Mf - это эффективная зависимость частоты от величины), но затем использовать реальные / сложные данные fft для ifft, чтобы получить исходный сигнал. но я не уверен, как заставить это работать правильно.

1 ответ

Мне кажется, что вы утверждаете, что

pt = ifft(fft(vt)./1)

не приводит к тому, что pt равно vt. Это верно до некоторой точности с плавающей запятой. Я бы посмотрел на максимум абсолютной погрешности между выборками pt и vt. Это должно быть как минимум на десять порядков меньше, чем у ваших образцов в Вт.

Другие вопросы по тегам