ЭКГ цифровая обработка сигналов в C#
Я ищу библиотеку C# .NET для цифровой фильтрации (низкочастотный, высокочастотный, режекторный) для фильтрации сигналов ЭКГ в режиме реального времени. Какие-либо предложения?
3 ответа
Если это некоммерческое использование, я слышал хорошие отзывы о библиотеке Signal Lab. Это бесплатно для некоммерческого использования, $570 для коммерческого использования. Это немного излишне, если вам просто нужны фильтры низких, высоких и полосовых фильтров. но он поставляется с элементами управления для визуализации данных, если у вас их еще нет.
Если вам просто нужны фильтры, вы можете просто написать свой собственный код для 3 фильтров. Вы можете проверить на страницах википедии примеры псевдокода фильтра нижних частот и фильтра верхних частот, я не смог быстро найти пример кода фильтра Ночи.
Вот несколько примеров C различных фильтров, чтобы помочь вам понять, что вам нужно делать.
Насколько я знаю, вы можете написать свое, потому что я сделал.
Это должно быть хорошим началом для вас (написано на C++, но вы можете легко преобразовать синтаксис в C#) - http://www.codeproject.com/KB/cpp/ecg_dsp.aspx
Сторонние библиотеки не будут очень гибкими по параметрам уравнения фильтра. Так как вы будете знать только характеристики вашего сигнала (амплитуды, частотный диапазон, частота дискретизации и т. Д.)
Я рекомендую сначала использовать алгоритм формирования волн, чтобы получить плавный сигнал на стороне C#, прежде чем применять фильтры, если частота дискретизации ЭКГ низкая.
Если ваши данные поступают отдельными порциями, я бы использовал Reactive Extensions. Это позволяет входу контролировать, что происходит дальше (реагирует на данные), вместо использования операций "вытягивания". Затем вы можете реагировать на эти данные, пропуская их через фильтры, а затем реагировать на эти данные, отображая их или выполняя дополнительные вычисления.
Если вам нужны только узкополосный, верхний и нижний фильтры, их легко написать. По мере поступления каждого куска данных вы можете решить, следует ли передавать его на следующий шаг (или нужно сначала изменить данные). Я полагаю, что вы можете написать весь этот фрагмент кода менее чем в 20 строк (возможно, менее 10), используя Rx. Это привело бы к довольно элегантному коду для этого варианта использования.