Download presentation
Presentation is loading. Please wait.
1
생체계측 강의록 Medical instrucmentation#8
생체의공학과 최준민 제출일 (화)
2
디지털신호처리 Programming Analog signal processing Measurand ADC (12bit)
Digital signal processing RA LA 마이크로 프로세서 Output 5ms 간격으로 data가 12bit로 표현 RC
3
Digital Signal Processing
기본개념 #include <stdio.h> . Main() { Initialize(); //모든 변수들의 초기화 작업 While(1) // 전원이 off 될 때 까지의 무한반복문 D=GetECGData(); L=GetContactData(); QRS Detection(); // 생체계측에서 다룰 내용 Update display(); RespondUser(); Alarm(); Send Data(); }
4
Digital Signal Processing
Z transform 이용해 Low pass filter만든다. 신호를 band pass filter → 미분 → 제곱 → 적분 (n-2)Ts (n-1)Ts nTs
5
Digital Signal Processing
H x[n] y[n]
6
Digital Signal Processing
7
Digital Signal Processing
Int MyFirstDF(int d) { Static int x1, x2, y1, y2; Int y; y=d+(x1<<1)+x2+(y1>>2)-((y2+y2+y2)>>3); x2=x1 x1=d; y2=y; y1=y; return(y); } Static 붙이는 이유는 여기서 선언한 함수들을 이함수 외부에서도 변수로 선언해야 하므로… 오른쪽으로 1bit 이동=제곱 왼쪽으로 2bit이동=1/2제곱 곱셈을 쓰지 않는 이유는 곱셈기가 들어있지 않는 processor의 경우 시간이 오래 걸리는데 그 시간이 5ms 를 초과해버리면 real time이 성립하지 않는다.
8
Digital Signal Processing
LPF의 구성 int QRS_LPF( int d) { static int y1=0, y2=0, x[26], n=12; //x배열은 ring buffer이용 int y; x[n]=x[n+13]=d; y=x[n]-(x[n+6]<<1)+x[n+12]+y1<<1-y2; y2-y1;, y1=y; //real time을 위한 코딩 if(--n<0) n=12; //n이 1만큼 감소하다가 0보다 작아지면 12로 되돌아간다. return(y); }
9
Digital Signal Processing
Ring Buffer y=x[n]-(x[n+6]<<1)+x[n+12]+y1<<1-y2; 왜 x[n+6]이지? x[n-6]이 아니고? → x[n+12]도 자연스럽게 해결 K지점으로부터 n-6이면 6번째 과거값은 Ring buffer를 쓰지 않는다면 12번째에서 다시 0번째로 되돌아가서 3번째인 d값이 된다. 하지만 Ring buffer를 써서 2copy형태로 만든 다면 단지 k에서 오른쪽으로 6번째로 이동하면 d값이 나온다! int QRS_LPF( int d) { static int y1=0, y2=0, x[26], n=12; //x배열은 ring buffer이용 int y; x[n]=x[n+13]=d; y2-y1;, y1=y; //real time을 위한 코딩 if(--n<0) n=12; //n이 1만큼 감소하다가 0보다 작아지면 12로 되돌아간다. return(y); } Data 쓰는 순서 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 a b c d e f g h i j k l m
Similar presentations