From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.


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

Could someone help me fix this error 20023 that appears when i run the attached VI. ifve tried everything but i cant get rid of it. Thanks

0 Kudos
Message 1 of 23

Your filter frequency must be between 0 and the Nyquist Frequency.  (1/2 the acquistion rate.)  What is your acquisition rate?


I think the problem is that your signal processing path starts out as just an array of data that gets converted into the Dynamic Data Type.  Since that array wire contains no timing information, it assumes your acquisition rate is 1 Hz.  Thus a filter value greater than 1/2 Hz is going to give your error.


What functions are you using to get your data?  (Those subVI's weren't included in your post.)

0 Kudos
Message 2 of 23

Thanks for responding. im using arduino INIT and arduino contnuous acquisition VI  and  a pulse sensor. Acqusition speed was 50. I tried to fix it but i dont know how to change the frequeancy. I tried a build waveform but the error kept popping up

0 Kudos
Message 3 of 23

You would build it into a waveform.  If that didn't work for you, show your code so we can figure out why it didn't

0 Kudos
Message 4 of 23
Accepted by topic author derek.s

When you build the waveform, there are three components: Y, t0, and dt.


You'd set the sampling rate with dt.  What did you set that to?  If 1, you've got 1Hz.  If 0.1, you've got 10Hz.  You'll want to set that appropriately.  It looks like 50Hz, so 0.02.  Then, you can use a filter setting of 25Hz or less.

0 Kudos
Message 5 of 23

Poor quality picture but the code looks like thisPoor quality picture but the code looks like this



0 Kudos
Message 6 of 23

Here's a better picture how the code looks like.Here's a better picture how the code looks like.



0 Kudos
Message 7 of 23

@derek.s wrote:

 I tried a build waveform but the error kept popping up

Building a waveform should work just fine as long as you set dt correct. Can you show us what you did? Alternatively you could do all the filtering unit-less and define all relevant frequencies relative to 1Hz.


Also your peak detection seems completely off. First of all, get rid of the local variable. The indicator named "scalar" just seems a dummy to store data via local variables. Since the local variable most likely gets read before the terminal receives data, you have a race condition. Just wire your calculation to the correct data source.


And no, the "# found" is not an array that contains any information about frequency, and a double dynamic data conversion is also certainly not the right way to get anything out of it.


What does the signal represent and what are you trying to get out of it. I am sure there are much better ways overall. You probably don't even need express VIs.

0 Kudos
Message 8 of 23

Please post actual VI's rather than hard to see pictures of your monitor.


Your first filter is set for 3Hz.  That means your first picture where you set it to dt=0.3 will give an error (since bandwith is just over 3 Hz, half of that is too small for a 3Hz filter.)  The  second picture would work because dt=0.1 or 10 Hz.  Half is 5Hz. and 3 Hz is less than that.


But your second filter is 40 Hz.  That mean you have to acquire at a rate of more than 80 Hz (dt < .0125 secs) in order to not have an error for that one.

0 Kudos
Message 9 of 23

im trying to read a signal from a pulse sensor and display it on a Waveform Chart and Display the BPM.  Im still an armature at LabVIEW so i maynot know better ways to do it yet

0 Kudos
Message 10 of 23