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,169 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

CAUTION! New LabVIEW adopters -- it's too late for me, but you *can* save yourself. The new subscription policy for LabVIEW puts NI's hand in your wallet for the rest of your working life. Are you sure you're *that* dedicated to LabVIEW? (Summary of my reasons in this post, part of a voluminous thread of mostly complaints starting here).
0 Kudos
Message 2 of 15
(4,156 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,129 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,099 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,097 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,087 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,079 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,064 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,070 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,036 Views)