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. Это должно быть как минимум на десять порядков меньше, чем у ваших образцов в Вт.