How to recover original raw signal from filtered results given filter coefficiencies?

5 次查看(过去 30 天)
Currently we've got some filtered ECG signal and we got the filters' parameter when it's been collected, including low pass, notch filter, FIR and IIR. Now we want to recover the 500Hz-sample-rate-ECG raw data. Is it possible and is there any efficient way of doing this, math is ok, and Python or MATLAB tool is better. Thanks.
Sliding window averaging filter is quite easy but as for IIR and Other FIR filters, what should we do?

回答(1 个)

John D'Errico
John D'Errico 2024-3-5
编辑:John D'Errico 2024-3-5
Is it possible? NO. Sorry. Mathematics does not give you a trash can, where this operation can be undone. Information content was effectively discarded in the filtering process. You cannot recover what was thrown out.
The extent where you could recover any information, using what is effectively a deconvolution, you should expect that deconvolution is a noise amplifying process. as such, in double precision arithmetic you can never recover the original data. You would need infinite precision results, as well as infinite precision arithmetic.
  1 个评论
Paul
Paul 2024-3-5
编辑:Paul 2024-3-5
Sometimes, it is possible to exactly recover the input, even with double precision limitations.
b = conv([1 -0.5],[1 -0.3]);
a = 1;
x = [1:5 zeros(1,5)].';
y = filter(b,a,x);
[x filter(a,b,y)]
ans = 10×2
1 1 2 2 3 3 4 4 5 5 0 0 0 0 0 0 0 0 0 0
any(x - filter(a,b,y))
ans = logical
0
To the extent that floating point precision limits the accuracy of an inverse filtering operation for a case where one might reasonably expect that operation to work, such issues are true with any inverse operation. Here, ifft/fft doesn't exactly recover the original signal
rng(100);
x = rand(1,1000) + 1j*rand(1,1000);
norm(x - ifft(fft(x)))
ans = 6.7769e-15
but that's non an indictment of the ifft/fft functions.
Of course, in any realistic problem inverse filtering with floating point math won't exactly recover the original signal (no different than any forward/inverse operation in general). But that doesn't mean inverse filtering will always be a fruitless task (though in some cases it will).

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Single-Rate Filters 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by