필터 지우기
필터 지우기

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

조회 수: 3 (최근 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