Hey Tyler,

You're the DSP guy and I'm not, so I'd be grateful for any corrections.

If you want to work in the theoretical/math domain, real-time kind of falls away and non-causality is not a problem. Follow Shannon, show x(t) = x(t), QED, have a beer.

If you deal with real values (as in real-world, not real vs.complex), whether numerical in a computer or voltages in a circuit, you have to take into account the precision/resolution/signal-to-noise of your values. When each [reconstructed x(n) - original x(n) < epsilon], where epsilon is the smallest value you can represent, then you again have a "perfect" reconstruction.

Indeed you can use a recursive (IIR filter) or non-recursive (FIR filter) difference equation, and either can be implemented in real-time. Because of the precision limit of all the values, many of the FIR sinc kernel end values (taps) will be zero and therefore can be ignored, making the kernel possibly much smaller. Also, you don't have to use a sinc kernel, since any LPF that does what you need in terms of phase, amplitude and stop-band attenuation, will work. Don't forget real world analog filters are reproduced as IIR digital filters, and technically you don't even need a digital filter if your analog filter (typically an elliptical or Bessel filter) is good enough.

As for the Nyquist rate, I was talking about your red data, which clearly has more than 2 points/cycle, so all of the above applies.

BTW, I also designed and built a sensor->Arduino->Pi system, but I used an IMU, which senses its own motion, not an ultrasonic or PIR sensor for remote motion. Also the Pi didn't send email. Cool stuff!

Click to expand...