Reply by David Kirkland July 7, 20052005-07-07
Matt Timmermans wrote:
> Sarah" <rene_uk78@yahoo.co.uk> wrote in message > news:Ytedncm70-P3S1TfRVn-vQ@giganews.com... > >>Hello all, >> >>I have an FIR filter (h) which I convolve (filter) with a sequence of data >>(x) that is [...] >>but in the reverse process, the original FIR filter becomes, IIR and >>unstable and I can't recover the original data. now the question is how I >>can recover the original data from the filtered data? > > > > "Randy Yates" <yates@ieee.org> wrote in message > news:4qbat5pu.fsf@ieee.org... > >>This sounds a lot like a HW problem, so I'm not going to answer it >>fully for you, but here is a hint: The zeros of H(w) are the poles of > > > I will -- it doesn't sound like HW to me.. > > 1) Factor the IIR into causal (poles inside the unit circle) and anti-causal > (poles outside the unit circle) parts. > > 2) Apply the causal filter > > 3) Time-reverse the anti-causal filter by replacing each pole with its > reciprocal, creating a minimum-phase filter, and apply this to the > time-reversed signal. > > Note that, depending on how you implement the IIRs, there may be some error > introduced between steps (2) and (3), because you'll have to truncate the > first IIR's response before you can time-reverse the signal. This error > drops off exponentially as you let the response run longer. > > If that's not acceptable, then you can stop the causal response at some > arbitrary point, and "pretend" to process the infinitely long IIR tail with > the time-reversed filter by initializing the time-reversed filter's state > appropriately, with values calculated from the forward filter's state at the > time you stop it. > > -- > Matt > >
One thing I will point out. Before deciding arbitrarily which poles are unstable, you will first want to decide what your Region Of Convergence (ROC) is. By varying your ROC you trade of instability with causality. Most of the time people use the unit circle, but they don't know they've implicitly chosen a ROC. Cheers, David
Reply by Matt Timmermans July 5, 20052005-07-05
Sarah" <rene_uk78@yahoo.co.uk> wrote in message 
news:Ytedncm70-P3S1TfRVn-vQ@giganews.com...
> Hello all, > > I have an FIR filter (h) which I convolve (filter) with a sequence of data > (x) that is [...] > but in the reverse process, the original FIR filter becomes, IIR and > unstable and I can't recover the original data. now the question is how I > can recover the original data from the filtered data?
"Randy Yates" <yates@ieee.org> wrote in message news:4qbat5pu.fsf@ieee.org...
> This sounds a lot like a HW problem, so I'm not going to answer it > fully for you, but here is a hint: The zeros of H(w) are the poles of
I will -- it doesn't sound like HW to me.. 1) Factor the IIR into causal (poles inside the unit circle) and anti-causal (poles outside the unit circle) parts. 2) Apply the causal filter 3) Time-reverse the anti-causal filter by replacing each pole with its reciprocal, creating a minimum-phase filter, and apply this to the time-reversed signal. Note that, depending on how you implement the IIRs, there may be some error introduced between steps (2) and (3), because you'll have to truncate the first IIR's response before you can time-reverse the signal. This error drops off exponentially as you let the response run longer. If that's not acceptable, then you can stop the causal response at some arbitrary point, and "pretend" to process the infinitely long IIR tail with the time-reversed filter by initializing the time-reversed filter's state appropriately, with values calculated from the forward filter's state at the time you stop it. -- Matt
Reply by Randy Yates July 4, 20052005-07-04
"Sarah" <rene_uk78@yahoo.co.uk> writes:

> Hello all, > > I have an FIR filter (h) which I convolve (filter) with a sequence of data > (x) that is: > > y=x*h; > in matlab, I use: y=filter(h,1,x); > > Now, I want to recover the original data from the convolved (filtered) > sequence (y), and in matlab I use: x1=filter(1,h,y); > > but in the reverse process, the original FIR filter becomes, IIR and > unstable and I can't recover the original data. now the question is how I > can recover the original data from the filtered data? > > Thanks for your comments and helps. > Sarah
Sarah, This sounds a lot like a HW problem, so I'm not going to answer it fully for you, but here is a hint: The zeros of H(w) are the poles of 1/H(w). What does that tell you about the required location of the zeros (i.e., inside/outside the unit circle) of H(w) in order for the inverse filter 1/H(w) to be stable? -- % Randy Yates % "With time with what you've learned, %% Fuquay-Varina, NC % they'll kiss the ground you walk %%% 919-577-9882 % upon." %%%% <yates@ieee.org> % '21st Century Man', *Time*, ELO http://home.earthlink.net/~yatescr
Reply by Sarah July 4, 20052005-07-04
Hello all,

I have an FIR filter (h) which I convolve (filter) with a sequence of data
(x) that is:

 y=x*h;
in matlab, I use: y=filter(h,1,x);

Now, I want to recover the original data from the convolved (filtered)
sequence (y), and in matlab I use: x1=filter(1,h,y);

but in the reverse process, the original FIR filter becomes, IIR and
unstable and I can't recover the original data. now the question is how I
can recover the original data from the filtered data?

Thanks for your comments and helps.
Sarah


		
This message was sent using the Comp.DSP web interface on
www.DSPRelated.com