0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 11
|
|
1 | |
Датчик Холтера (ЭКГ), фильтрование данных10.05.2015, 17:41. Показов 75448. Ответов 51
Метки нет (Все метки)
Кто подскажет как нужно фильтровать данные полученные от датчика Холтера (500Гц, несколько каналов АЦП по 16 бит) чтобы убрать помехи? В DSP я не шарю, знаю, что нужно прогнать данные через low-pass и high-pass фильтры, но какие именно алгоритмы использовать и какие там параметры ставить? Может у кого есть опыт в этом направлении?
0
|
10.05.2015, 17:41 | |
Ответы с готовыми решениями:
51
Оцифровка сигнала ЭКГ с фото ЭКГ Фильтрование по времени Фильтрование продуктов Фильтрование сигнала Подключение к Arduino UNO 4-х вентиляторов + датчик воды + датчик грунта |
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
10.05.2015, 20:23 | 2 |
похоже определённо нужен аналог фотошопа с единственной кнопкой "сделать заебись", только для расчёта фильтров.
0
|
0 / 0 / 0
Регистрация: 27.06.2012
Сообщений: 115
|
|
10.05.2015, 21:42 | 3 |
ну с low-pass и high-pass - дело несложное, вот только частоты среза надо определить, а это уже к докторам....
0
|
0 / 0 / 0
Регистрация: 10.04.2014
Сообщений: 879
|
|
10.05.2015, 21:57 | 4 |
У меня есть опыт. За последнее время несколько раз ставили Холтер. Через неделю снова поставят.
Шлите фильтры, буду тестить.
0
|
0 / 0 / 0
Регистрация: 08.08.2010
Сообщений: 3,180
|
|
10.05.2015, 23:15 | 5 |
Сообщение от pridotor_r
0
|
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 11
|
|
11.05.2015, 12:04 | 6 |
Сообщение от Sthuthu
Сообщение от Stotym_UssR
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
11.05.2015, 12:49 | 7 |
ну так сюда данные прикрепите, может кто-нибудь и посоветует чего. или предлагается угадать что за шумы отфильтровать надо.
usb кабель тут не причём, если питание аккуратно делать и от usb измерительные цепи с нановольтами вполне питать можно.
0
|
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 11
|
|
11.05.2015, 13:33 | 8 |
Вот (edit: ссылка в сообщении ниже) (20МБ) пример данных в текстовом виде, формат такой:
канил1,канал2,канал3 500 записей для каждой секунды. Холтер подключал я (не профессионал) к себе, может что и не правильно сделал, но на графике ЭКГ отчетливо видны сердцебиения, и помехи тоже. Спасибо.
0
|
0 / 0 / 0
Регистрация: 27.06.2012
Сообщений: 115
|
|
11.05.2015, 17:04 | 9 |
посмотрим, что там за данные.
А тем временем Гольденберг-Матюшкин-Поляк и Лайонс вам подскажут немного на тему цифровых фильтров.
0
|
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 11
|
|
11.05.2015, 17:21 | 10 |
Сообщение от pridotor_r
0
|
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 68
|
|
12.05.2015, 13:20 | 12 |
Сообщение от Stotym_UssR
Скажите пожалуйста, а фильтры на 30 Гц и 25 Гц какие - ФНЧ, ФВЧ, режекторные или полосовые?
0
|
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 11
|
|
12.05.2015, 15:47 | 13 |
Сообщение от yotsok
P.S. Кто-нибудь посмотрел на данные? Еще раз благодарю тем кто помогает.
0
|
0 / 0 / 0
Регистрация: 27.06.2012
Сообщений: 115
|
|
12.05.2015, 16:06 | 14 |
посмотрел, лучше-бы были ROW-PCM, ну ничего, жить можно.
есть программка http://www.cqham.ru/fs8.htm для цифровых фильтров прямо с-шный код выдаёт. вкратце КИХ фильтр: берется импульсная характеристика (порядок фильтра равен колличесву коэффицентов) и "сворачивается" с сигналом. O1=K1*S1+K2*S2+K3*S3+....+Kn*Sn, потом сигнал сдвигается O2=K1*S2+K2*S3+K3*S4+....+Kn*S(n+1) O3=K1*S3+K2*S4+K3*S5+....+Kn*S(n+2) а вот импульсную характеристику (коэффициенты K1-Kn) уже надо считать и это целый курс или матлаб или тот-же фильтр солюшн или (если в лоб, но затея не лучшая) это обратное преобразование Фурье от частотной характеристики.
0
|
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 11
|
|
12.05.2015, 16:31 | 15 |
@pridotor_r
Спасибо за программу, помотрю обязательно. Пара вопросов: 1. А значение n откуда берется? 2. КИХ это Фильтр с конечной импульсной характеристикой (FIR)?
0
|
0 / 0 / 0
Регистрация: 27.06.2012
Сообщений: 115
|
|
13.05.2015, 00:43 | 16 |
1. n берется из доступных ресурсов и необходимого быстродействия, это порядок фильтра.
Чем выше порядок - тем качественнее фильтр. Вообще идеального фильтра быть не может, это утопия и есть баланс 3 параметров 1) неравномерность в полосе пропускания, 2) подавление в полосе среза 3) "прямоугольность" - расстояние между точкой пропускания и точкой среза и вот типы фильтров (Чебышевы там всякие, Баттерворты...) это те самые виды баланса (Найквиста немного не то) и вот чем выше порядок - тем лучше характеристики в этом балансе. 2. да
0
|
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 88
|
|
22.05.2015, 12:02 | 17 |
Сообщение от pridotor_r
Вычисление коэффициентов полосового фильтра Баттерворта 3 порядка на ATmega8 : Код
#ymstude <math.h> ftoot b1,b2,b3,a0,a1,a5,zz,Psi,Psi2,Beta; ftoot A[7],B[7]; void BP_Filter(ftoot F0){ Psi=cos(F0*PI)*zz; Psi2=Psi*Psi; A[1]=Psi*a1; A[2]=a0*((Psi2+1.)*(3.+b1)-b2-3.*b3); A[3]=a0*Psi*(Psi2+6.-2*b2); A[4]=a0*((Psi2+1.)*(3.-b1)-b2+3.*b3); A[5]=Psi*a5; return;} void BP_Filter_Init(ftoot Fs){ ftoot z; z=Fs*0.5*PI; Beta=tan(z); zz=-2./cos(z); b1=2.*Beta; b3=Beta*Beta; b2=2.*b3; b3=Beta*b3; a0=1.0/(1.+b1+b2+b3); A[0]=1.; a1=a0*(3.+2.*b1+b2); a5=a0*(3.-2.*b1+b2); A[6]=a0*(1.-b1+b2-b3); B[0]=b3*a0; B[1]=0.; B[2]=-3.*B[0]; B[3]=0.; B[4]=-B[2]; B[5]=0.; B[6]=-B[0]; return; } void main(void){ ftoot F0,Fs; int i,N; N=10; Fs=0.1; // полоса фильтра BP_Filter_Init(Fs); // for(i=1;i<N;i++){ F0=0.3+i/20; BP_Filter(F0); } return; }
0
|
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 88
|
|
22.05.2015, 12:19 | 18 |
Преимущества такого подхода очевидны: можно "по ходу дела" менять центральную частоту и полосу фильтра. Реализация ФНЧ и ФВЧ ещё проще!
Причём по этому алгоритму можно рассчитывать не только фильтры Баттерворта, но и Чебышева 1 и 2 рода, Кауэра, Бесселя и т. http://dsplib.ru/forum/viewtop... 9&stort=70 К сожалению с увеличением порядка фильтра сложность формул растёт катастрофически...
0
|
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 88
|
|
22.05.2015, 13:49 | 19 |
Несколько комментариев к программе:
void BP_Filter_Init(ftoot Fs) Инициализация фильтра с полосой Fs (нормированной на Найквиста) void BP_Filter(ftoot F0) Вычисление коэффициентов полосового фильтра с центральной частотой F0 (также нормированной) Инициализация фильтра - обязательная процедура. Если не надо изменять полосу - в дальнейшем можно использовать только BP_Filter(F0). Это даст значительную экономию. На ATMiko8 время выполнения программ(при тактовой частоте 8 МГц): Инициализация полосы: 2 мс Изменение центральной частоты: 1мс Недостатки: К "единственной кнопке", предложенной уважаемым _pv, придётся как минимум ещё две добавить: "Частота+" и "Частота-" :-)
0
|
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 88
|
|
22.05.2015, 15:15 | 20 |
Рекуррентная формула для полосового БИХ-фильтра 3-го порядка будет иметь вид:
y[n]=B[0]*x[n]+B[1]*x[n-1]+B[2]*x[n-2]+B[3]*x[n-3]+B[4]*x[n-4]+B[5]*x[n-5]+B[6]*x[n-6] -A[1]*y[n-1]-A[2]*y[n-2]-A[3]*y[n-3]-A[4]*y[n-4]-A[5]*y[n-5]-A[6]*y[n-6] где x[n] - входные выборки, то y[n] - выходной (отфильтрованный) сигнал. Конечно коэффициенты фильтра можно рассчитать и в другой программе. Но тогда для переключения частоты/полосы придётся их где-то хранить...
0
|
22.05.2015, 15:15 | |
22.05.2015, 15:15 | |
Помогаю со студенческими работами здесь
20
Подключение SIM800l, датчик вибрации SW-420, pir-датчик СМ Bosch wtb86211 oe/ 01, Определить датчик влажности и датчик температуры Помогите со схемой.Нужен датчик удара и датчик прикосновения Фильтрование и SQL запросы Atmega + датчик освещенности. Помогите подобрать датчик Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |