Professor Adrian Chan gave permission to use his collected dataset for a previous project:
https://www.sce.carleton.ca/faculty/chan/matlab/myoelectric%20control%20development%20toolbox.pdf
https://www.mathworks.com/help/signal/ug/classify-arm-motions-using-emg-signals-and-deep-learning.html
It seems that there was a notch filter already built into the acquisition device.
Below is the Raw EMG Spectrum for a specified electrode.

Source: https://snntorch.readthedocs.io/en/latest/tutorials/tutorial_2.html
Membrane Potential of each Neuron:
V(t) = β × V(t−1) + I_syn(t)
V(t−1): Membrane potential at previous time step.
β: Decay (leakage) factor (between 0 and 1) ---> Preset before training
I_syn(t): Synaptic current at time t
A neuron generates a spike if its membrane potential exceeds a threshold Vth:
s(t) = u(t)(V(t) - Vth)
where u(t) is the unit step function
After firing a spike, the membrane potential is reset.
The synaptic current Isyn is calculated as:
Isyn(t) = W⋅s(t)+b
W: Weight matrix
s(t): Input spike vector at time t.
b: Bias vector
Isyn(t): Synaptic current vector at time t
Source: https://ieeexplore.ieee.org/abstract/document/10242251
LIF Neuron Quantization Levels: 8
Layer 1 (between input and hidden layer) Bit Width: 8
Layer 2 (between hidden and output layer) Bit Width: 8
16-bit (4.12 Format) Quantized Model:

Hand Close (Rock):
Hand Open (Paper):
Wrist_Extension (Scissors):
Memory Map of Weights and Biases in FPGA:












