С матлэбом тоже не имел дело, писал всё в С++ builder, в моём проекте - метод скользящего среднего подошёл идеально.
Если нужно более узкие и крутые области среза частот то тут без преобразования Фурье не обойтись.
После преобразования массива отсчётов получаете массив с амплитудами частот , удаляете из массива частоты которые вам нужно , после чего обратное преобразование в массив отсчётов. Но так как вам нужно отсечь частоты ниже 0.5 Гц

будет не просто , нужно что бы был хотя бы один период ( а лучше несколько) частоты что-бы преобразование сработало . Это значит надо обрабатывать массив за несколько секунд отсчётов, и будет отставание данных на мониторе от данных в реальном времени.
А вот с обрезанием частот выше 40 Гц Фурье справиться наУра

и можно взять массив в 100 миллисекунд, не надо будет даже специального режекторного фильтра на 50Гц.
Как сделать преобразование Фурье в С++ builder могу подсказать (есть опыт) а вот обратного преобразования не делал , не было нужды так как писал анализатор спектра.