LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How can I eliminate the time delay pruduced after fitering, and line up with the original signal

I am using DAQ to read voltage change from two pressure transducer, one 0 to 5 bar, other 0 to 50 bar. In block diagram (as first picture 1), I read signal with DAQMAX and show merge the signal to one graphic indicator, the top line of merge signal be added a filter to filter the noisy of 0 to 50bar pressure transducer signal, however after filtering, (picture 2) the 0 to 50 bar data shows the time delay (white line) compare than 0 to 5bar data which is the one without filter(red line), How can I line up the after-filter signal  with the original signal?

 

Download All
0 Kudos
Message 1 of 15
(4,899 Views)

 

In real time, you can't.  It's in the nature of low-pass filtering.  In post-processing, you can try the Zero Phase filter.  I've also heard of people passing data through a filter twice, but reversing the data for the second pass to "undo" the same delay induced by the first pass.  I imagine that could leave some small edge effects at the beginning and end of the data.

 

 

-Kevin P

ALERT! LabVIEW's subscription-only policy came to an end (finally!). Unfortunately, pricing favors the captured and committed over new adopters -- so tread carefully.
0 Kudos
Message 2 of 15
(4,886 Views)

Maybe it isn't possible in true real time, but the delay introduced by your filter is a fraction of a second.  If you are willing to delay the display of the data by that much time, you can sync the two signals by introducing the appropriate time delay to the waveform data.

 

Of course a lot of this depends on the type of filters you are using.  How are you filtering your data?  Do you need a particular type of filter, or will any smoothing function do?

Message 3 of 15
(4,859 Views)

You haven't shown us any code and there are millions of ways to filter a signal, each with adjustable parameters. Looking at your data, the noise is mostly comprised of small spikes, so I believe you could get away with much gentler filtering, which would also lessen the time delay.

 

What filter are you using, what are the tuning parameters and what is the reason for your choices?

0 Kudos
Message 4 of 15
(4,829 Views)

@Kevin_Price wrote:

 

In real time, you can't.  It's in the nature of low-pass filtering.  In post-processing, you can try the Zero Phase filter.  I've also heard of people passing data through a filter twice, but reversing the data for the second pass to "undo" the same delay induced by the first pass.  I imagine that could leave some small edge effects at the beginning and end of the data.

 

 

-Kevin P


I have used that approach but a much more simple solution is to apply the same filter to both signals so they both get the same delay.

 

PLEASE CORRECT ME IF I AM WRONG...

 

Additionally I BELIEVE the delay is a factor of the order of the filter so another filter of the same order but with different cut-off frequencies etc... could be used on the OTHER signal. 

 

Ben

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
0 Kudos
Message 5 of 15
(4,827 Views)

Exactly, I saw people did it one time by pass through data to two filter and each time with reverse 1d array, but it been long time ago, I forgot how can he made it?

0 Kudos
Message 6 of 15
(4,817 Views)

 

I saw people did it one time by pass through data to two filter and each time with reverse 1d array, but it been long time ago, I forgot how can he made it? I post the snapshot below, I am using configure filter with smoothing mode. 

0 Kudos
Message 7 of 15
(4,809 Views)

 

I saw people did it one time by pass through data to two filter and each time with reverse 1d array, but it been long time ago, I forgot how can he made it? I post the snapshot below, I am using configure filter with smoothing mode.

0 Kudos
Message 8 of 15
(4,794 Views)

Paul, please attach the vi files.  Pictures of your monitor are very difficult to see.  If you want to show pictures, at least use snipping tool, or better yet in the block diagram use "Edit -> Create VI snippet from selection"

0 Kudos
Message 9 of 15
(4,800 Views)

Regarding Filters and Delays:

 

Suppose I have sampled data, particularly data with some "random" component (let's call it "noise") present.  I want to (digitally) filter it, so I take some (usually small) subset of the data, say N consecutive points, and compute some function on those points to give me a number.  With which of my N (let's make N odd, for simplicity) points to I associate my number?  One logical answer is that I associate it with the middle value, as it represents the "middle of the pack of data" that went into the computation.  Indeed, common forms of low-pass filters are the "moving average" and the "median" filter, both of which express (in their names, if nothing else, "middle").

 

What about if the data are being acquired?  I can't (without polishing my Crystal Ball) know about points in the future, so I must base my filter on the current point and N-1 points in the past.  This introduces a time delay, as the filter can be said to represent the response N/2 samples earlier.

 

On the other hand, if I have access to all of the data in advance, I can "center" my filter on a point and use the N/2 points that come earlier and the N/2 points that come later.  The technique mentioned of running the filter from the beginning to the end of the data, then reversing the data (= reversing time) and doing it again is a similar but slightly different technique (can you see why?  it amounts to averaging an N-point filter advanced by N/2 points with another N-point filter retarded by N/2 points -- you can work out the math if you are sufficiently curious).

 

Bob Schor

0 Kudos
Message 10 of 15
(4,766 Views)