Conserving events with Hilbert transform

Hi,
For a motor task we are trying to use EMG to detect small finger movements of the left hand while the participant presses buttons with the right hand.

We tried doing a Hilbert Transform of the EMG Time series but this only computes a time-frequency plot with all the events removed. We would need those events to look specifically for the synchronous movements of the left hand, i.e those that happen when the button is pressed with the right hand.

Would there be a way to apply a hilbert transform on the EMG time series and obtain a time series as result, to keep the button press latencies and facilitate visualization ?

Thanks !

Hi team,
Just to add to Antoine's question, he's trying to get a single timeseries of EMG power in a single time band. Perhaps there's other options than Hilbert, but trying to use Hilbert in Brainstorm was problematic as it required to first import the data, and it returned a time-freq structure instead of a time series. As Antoine said, this is something he wants to do early on, ideally on the "link to raw" file, and to keep all events.
@antoinebk, I just had a thought to look at what they do in the cortico-muscular coherence tutorial, just to see what they do with the EMG signal: filter and rectify. I think bandpass and Hilbert (analytic signal instantaneous amplitude) is still a better approach, but doesn't look like an option currently.

1 Like

@antoinebk, since you only need the instantaneous amplitude, rather than the complex analytic signal, you can simply:

  1. Apply a band-pass filter for the EMG channel (as described in the Coherence tutorial)

  2. Use the Pre-process > Run Matlab command on the band-pass filtered raw data indicating the name for the EMG channel with the command:

    Data = abs(transpose(hilbert(transpose(Data))));
    

If the hilbert function is not available, you can use oc_hilbert which is included in Brainstorm

1 Like