Showing results for 
Search instead for 
Did you mean: 

Error 20023... "The following conditions must be met: 0 < f_low <= f_high <= fs/2."

Go to solution


I was getting some prob when I wanted to filter an EMG signal. It was a 3rd order Butterworth low pass filter. I set the lower cut off frequency at10Hz. It showed a msg "Error -20023 occurred at Filter->     Possible reason(s): Analysis:  The following conditions must be met:  0 < f_low <= f_high <= fs/2." My original sample frequency was 51.2Hz. I didn't find any option to change the deafult sample frequency.


Could anyone plz help me out? VI is attached here.


Thanks at advance.





0 Kudos
Message 1 of 13



your problem is that you have raw data as array without timing information. Therefore, the dynamic data type does not include timing information as well. So how should the filter know about frequencies?

You have to create waveform data (including a delta t for the sampling) for using filter functions.



CEO: What exactly is stopping us from doing this?
Expert: Geometry
Marketing Manager: Just ignore it.
Message 2 of 13

Thanks Norbert. Do you have any VI (example) for creating waveform data? I wanna have a look on this to understand the facts.





0 Kudos
Message 3 of 13
Accepted by taslim.reza

@taslim.reza wrote:

Thanks Norbert. Do you have any VI (example) for creating waveform data? I wanna have a look on this to understand the facts.

Just go into the Waveform palette.  There is a Build Waveform function there.  It looks just like a Bundle By Name.  The dt is what sets the data rate.  Y is the actual data (your array), and t0 is the start time.  You don't need to worry about t0 in this situation though.

There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
Message 4 of 13

Thanks crossrulz. It worked nicely. Smiley Happy

0 Kudos
Message 5 of 13

Hi, can you post the vi with the solution presented? Having the same issue and not understanding the method of correcting the problem.


Thank you!

0 Kudos
Message 6 of 13

Hi, sorry I can't find the VI. It's been long since I last wrote the programme. Maybe you can post your vi and someone might be able to help.

0 Kudos
Message 7 of 13

I'm just making some assumptions here, but it appears that the problem was they had an array of data points with no time data.  The filter has no idea how to work because it doesn't know how far apart in time one data point was taken from the next.


You either have to:

  • Take the data in such a way that it includes timing information (origin and delta-t), or
  • Fudge it by using the "Build Waveform" function to add timing information after the fact.  (I personally loathe this one because you are technically modifying data - how would anyone know if the timing you added is correct?  It wasn't measured, it was added in later.  This would be a last, last resort for me.)
(Mid-Level minion.)
My support system ensures that I don't look totally incompetent.
Proud to say that I've progressed beyond knowing just enough to be dangerous. I now know enough to know that I have no clue about anything at all.
Humble author of the CLAD Nugget.
0 Kudos
Message 8 of 13

Thank you. I was able to work around it. Essentially I used a filter point by point filter instead of trying to program it with a filter that expected an array of data.


That solved what I was trying to do, which was essentially to just filter raw data from pressure sensors.

Message 9 of 13

This was a simple and elegant solution to the problem, what about if your data acquisition rate was variable (dt not constant)?

0 Kudos
Message 10 of 13