I am new to the field of signal processing. I have sensor data (Impedance across time), that output is like this.DATA

On the right side, I have a noisy signal portion in my data, marked by the red block. I want to remove this noise, its a hand movement artifact noise.

How can I remove this noise?

I have tried to find the frequency of the noise by applying FFT on the data file attached below but I got this result

Data file

  • $\begingroup$ hm, this doesn't look at all like your noise is confined to a specific frequency range that your signal does not occupy, so that you can separate the two with a filter. So, that approach won't work. $\endgroup$ Commented Mar 18, 2020 at 8:54
  • 1
    $\begingroup$ You could threshold above 4000 ohms to remove all the data below 4000 $\endgroup$
    – DSP Novice
    Commented Mar 18, 2020 at 8:56

2 Answers 2


This is inspired by the excellent answer by @Richard Lyons (which I upvoted) and the comment by @DSP Novice. It basically combines what they said. If the width of the 5000-amplitude pulse is always the same, then simply do as Richard Lyons suggested: it works fine. If the width varies, then the following scheme could be used:

Fig. 1 noise remover

I imported your raw data and put it into the simulation block at the left of the figure. I ran the simulation from 0 to 18.33 s, in increments ($\Delta t$) of 0.03 s. The results are shown in the next figure:

Results Fig. 2

The black trace is the raw data, the red trace is processed to remove the hand movement artifact noise and the cyan trace is the differentiator output. The simple differentiator, with equation shown in the figure, had a differentiation time constant of 0.01 s. The differentiator's output was passed to a comparator, with fixed reference value of -300: this was arbitrarily selected by looking at the cyan trace.

The comparator output is a logic level: it is low so long as the comparator's input is above -300. It goes high when the differentiator's output, i.e., the comparator's input, goes below -300. The comparator's output was arbitrarily delayed by 6 simulation steps, i.e., 6 times 0.03 s, and then the delayed comparator output triggered a peak detector. The peak detector just serves as a data latch.

So, the peak detector's output was logic level zero while the delayed comparator output was logic level zero and this simply allowed the ramp and hold to pass the raw data through. But, once the delayed comparator output went logic level high, it triggered the ramp and hold so that the raw data, at the time of the trigger, was sampled and held.

  • $\begingroup$ Thanks for your reply, can you tell me which software you have used for simulation? Can you send the simulation model to me? that would be very helpful for me. And I can easily import my raw data on my own. $\endgroup$
    – Ati
    Commented Mar 19, 2020 at 7:21
  • $\begingroup$ Thank you so much @Ed V. yes I have downloaded it. but actually I want to implement your idea on Matlab so I am trying. anyway, thanks a lot for your kind answer. $\endgroup$
    – Ati
    Commented Mar 23, 2020 at 6:56
  • $\begingroup$ Glad to be of help and Matlab is the way to go! Thanks! $\endgroup$
    – Ed V
    Commented Mar 23, 2020 at 12:59
  • $\begingroup$ hello @Ed V. you gave me Lightstone library it has a lot of .mox files in different sections, but when I open it, its shows me this error "A model with the same name is already open". even nothing is open, and one Simulink model you have given when I open it. its give me this error "this file cannot be read. it either corrupted or was built in extend 6 or earlier". how can I resolve these issues? can you please tell me. $\endgroup$
    – Ati
    Commented Mar 26, 2020 at 3:29
  • $\begingroup$ @Ati The .mox files are simulation models. I have seen that incorrect error message about already being open. Do you have the free demo ExtendSim 10? Try opening the model from the app’s drop-down menu rather than double clicking on the model. The model is not Simulink. It was made with Extend 6, but should open with all later ExtendSim versions. I will open it with the Windows PC version of ExtendSim, get it running and put the model at my web site. Give me a couple of hours and I will post the link here. $\endgroup$
    – Ed V
    Commented Mar 26, 2020 at 12:53

Is the width of your 5000-amplitude pulse always the same? If so, then just discard your signal samples that occur after seven seconds. If the width of your 5000-amplitude pulse varies then try lowpass filtering (experimenting with different lowpass filter bandwidths) your signal to see if the filtered signal contains the information you desire. If the width of your 5000-amplitude pulse varies then you might try differentiating your signal and measuring the time instant $t_o$ of the large negative amplitude transition. Then just discard your original signal samples that occur after $t_o$ seconds. Good Luck.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.