. , , ,

,,,

,

. . , . . . : , .

. , - .

. . , : .

. , .

. , . , , . :

- ,

- ,

- .

, .

, 1. : , , , . : , , .

. 1. .

. . , .

, , , .

++, - .

- . , , . , ++ . , , , . , . , [9]. , , , . , , . , OrthographicCamera ( ) PerspectiveCamera ( ) Camera. , .

, , , .

Microsoft Visual C++. Visual C++ Windows. Visual C++ - Widnows, . , Visual C++ . Visual C++ , , . Windows , ++, . . ++ , . , Microsoft Microsoft Foundation Classes. MFC , . , , cWnd MFC, [2]. , MFC , , , , .


1.

, , , . , , . , . , . , , [1]. . 70- . , , , , [3]. . :

1.  .

2.  .

3.  .

4.  .

- () , , , , .

.

, . 70- [1]. , . 12 . . . , 250 500 . , , , , , 80 . {Yi}, Yi ( ) i - . , . (R), (L), (F) (C1-C6). :

:

I = L R

II = F R

III = F L


:

aVR = R (L + F)/2

aVL = L (R + F)/2

aVF = L (R + L)/2

V1 V6:

Vi =Ci (R + L + F)/3

(N), , . , 12 8 [3]. 4 , . :

III = II I

aVR = -(II+I)/2

aVL = (2I II)/2

aVF = (2II-I)/2

, [4]. Fs . Fs (. . Fb). , , , , [5].

500 , [6,7]. , , , , , 80 . , 500 . 5 . , , .

, , 0.05 120 ( 3dB). , 100 250 , . , , [8].

, , , , . , . [10,11], . , .

.

. , , , . , , . - .

. , . . , , . , 3 (), (), , , [12]. (), 60-70 , 50 60 . , , () 3.2 , .

1.1 1.2 . Z -1 , , , , , .

1.1.

1.2. .


, , . , , , . , , . , , . . , [5]. Matlab . .

, , , ( 1.3).

1.3. -


d(t) s(t) n(t). u(t) - , . , , . y(t) - , . , e(t) = s1= d(t) - y(t) - , . , E[(n(t)-y(t))2]. [15]:

- ;

- , ;

- .

, .

, . , . , , , , 0.05 , -3 . , ST . . , , - . , . , , . , .

, , , . . . , , . . , QRS , T . . ( .1.4). () . , QRS - . :

1 ; 2 PR ; 3 ST ;

2 ; 5 QRS ; 6 QT ;

7 PR ; 8 RR ; 9


. 1.4.

, - , ( ) . , , , . , : . . , . , , . , . , , , . , .. , , [16], , . , . , . , , , . , , , . , , - .

, , , ). , (), . , .

, , , .

. , . , - . , , . , , . . , . , , . , .

. - . , , , . , , .

, . , . . , , . , , . . , - (-) .

. , Internet. [18].

, . 2 : . , . , . : , . , , ( QRS ), . , . . , . (), , -, -. [19]. , , , - .

, , , , . , , , :

, , . , , , .

-2.

 

2. -

, , , , .

, . . , . ? . , , , . 2.1.

. 4.1. .

, , , . . 2.2 , .


. 2.2. - .

- () . : , , , , , . , , .

- , , .

FORTRAN II , . , - , .


. 2.3. .

. . . .

. 2.4. - .


, . - , - , . , , .

- () - , , , .

:

- , .

- - .

- .

- .

-

. , , .

- :

- () , , .

:

-OO -

- , .

-

- () , , - ; , , .

, ; .

, . - . :

-

-

-

-

, -. :

-

-

-

, .

.

, . , , . , , , .

: , , .

. , , , , .

, , , , :

- - .

- ,

- , ,

, .

, . , - , . . , : , .

- . - ( ). , .

: , . , : . , . . : , ; , .

, .

++ , . , , .

. , . , . ,

, .

. , . . - : , . : . .

, .

.

. :

.

( ) ( ).

- . , ( ). , , .

, . : , ; , . : , , -, .

- , ++. : , ; . .

.

, , . :

, ( ). , .

.

, : , . , .

, : ( ) ( ). . , OOD, , .

, .

.

, . OODB , . , . .

( , ) () ( , ).

, . , , . , , .

 

3.

 

,

, Windows MFC, . MFC, , , Windows , API (Application Programming Interface). , MFC Windows . , MFC , , API . API ( 2000), , 700 , . Windows , MFC .

Windows , , (, , , . .). (DLL), . , , .

Windows , (event-driven applications), . , , . , . , , Windows . , , , , . , . . . , , . , (multithreaded application) (thread) .

. Windows , WM_ (Windows Message). , WM_PAINT , , . WM_PAINT , .

. , . , Windows , (device independent support). , , . Windows . (layout), . , . , : , . , , , .

Windows (virtual - key code), . - , : , , . Windows (thread). . Windows . 3.1.

. 3.1 Windows.

, Windows . Windows . :

- WinMain ( ), ;

- , , .

. Windows , . , MFC WinMain , , Visual Studio.

.

. 3.2 . .

:

-  (. 2), (. 3).

-  .

-  .

-  ( ).

-  .

-  .

-  ( ).

. 3.2 .


.

, *.@8. , , , . .

void CNewvisualDlg::OnLoadFile()

{

//

CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT," (*.@8)|*.@8||");

//

int response = dlg.DoModal();

if(response = IDOK)

{

CString fname=dlg.GetFileName();

if(fname=="") goto end;

HANDLE InputFile = CreateFile(fname,GENERIC_READ,FILE_SHARE_READ,

0,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0);

// 12

ReadK12(InputFile);

//

m_dlgPaint.Create(IDD_VIEW_GRAPH,this);

m_dlgPaint.SetWindowPos(&wndTop,200,0,m_dlgPaint.right*0.8,

m_dlgPaint.left-100,SWP_SHOWWINDOW);m_dlgPaint.ShowWindow(SW_SHOW);//

m_dlgPaint.Counter = 0;

SetTimer(ID_SHOW_TIMER,2,NULL);

memcpy(m_dlgPaint.StartOtv,StartOtv[0],16000);

Flag = true;

UpdateData();

m_dlgPaint.Invalidate();

}

end:

;;

}

. *.@8 53 ( , , ..). , , , , .

.

, ( 2).

SetTimer(ID_SHOW_TIMER,2,NULL), 2 . 500 . , . .


.3.3 ( )

; , , , . Graph.dll, . () , . , MFC, WIN32 DLL. DLL , C++. , DLL( ), , , DLL. DLL . DLL- , .

DLL DLL MFC , . DLL MFC , . DLL , DLL, Mfc42d.dll, Mfc042.dll .

.

class AFX_EXT_CLASS CGraph

{

double dXLeft;//

double dYTop;

double dFracX;//

double dFracY;

double dMinX, dMaxX;// Min-Max

double dMinY, dMaxY;// Min-Max

double dSpanX;//

double dSpanY;//

double dStepX, dStartX;//

double dStepY, dStartY;

UINT nPoints;//

//

UINT nStepsX, nStepX, MinX, MaxX;

UINT nStepsY, nStepY, MinY, MaxY;

UINT *X, *Y;//

int iPowerX, iPowerY;//

CRect rect;//

// : ,

CFont TextFont, TitleFont, PowerFont;

public:

void GetRect(int&,int&,int&,int&); //

Cgraph (CRect, UINT, double ,double ,double ,double);//

//

void ScaleX(TValues&);

void ScaleY(TValues&);

//

void Scale (double, int&, double&);

//

void DrawGrid (CDC*, CString&, CString&, CString&, TValues&, TValues&);

//

void DrawFunc (CDC*,BYTE *);

virtual ~CGraph ();

};

, , . DrawGrid DrawFunc. , , Scale, Y ScaleX ScaleY. DrawGrid , DrawFunc .

Filters.

Filters .

class Filters

{

public:

char Name[10];//

double * Coeficients;//

short * QuantizCoeficients;//

BYTE NumCoef;//

//

Filters(char * FilterName,BYTE NumCoeficientsdouble,double * Coef = NULL,double * Quant = NULL);

//

void GetType_1(short * InBuffer,short * OutBuffer);

//

void GetType_2(short * Inbuffer,short * Outbuffer);

//

//

void GetQType(short * Inbuffer,short * Outbuffer,BOOL Type,BYTE PreCoef = 0);

~Filters();//

};

, , .

, , . , , . . (, ) 2 : () (). - .

:


, :


, , , , , . - , , .. .

:


:



, : , , .

, , , , , . , . , . . , , ( Matlab v.6.0).

:

//

void Filters::GetType_1(short * InBuffer,short * OutBuffer)

{

WORD i = 0;

double Temp = 0;

while(i<8000)

{

if(i<NumCoef) OutBuffer[i] = InBuffer[i];

else

{

for(BYTE j = 0;j<NumCoef;j++)

Temp += InBuffer[i-j]*Coeficients[j];

OutBuffer[i] = (short)Temp;

}

Temp = 0.0;

i++;

}

}

//

void Filters::GetType_2(short * Inbuffer,short * Outbuffer)

{

WORD i = 0;

double Temp = 0;

while(i<8000)

{

if(i<(NumCoef/2 - 1)) Outbuffer[i] = Inbuffer[i];

else

{

for(BYTE j = 0;j<(NumCoef/2);j++)

Temp += (Inbuffer[i-j]*Coeficients[j]

- Outbuffer[i-j]*Coeficients[j+NumCoef/2]);

Outbuffer[i] = (short)Temp;

}

Temp = 0;

i++;

}

}

, bm.

, Siemence , . GetQType. , Matlab , . .

//

void Filters::GetQType(short * Inbuffer,short * Outbuffer,BOOL Type,BYTE PreCoef)

{

WORD i = 0;

int Temp = 0;

while(i<8000)

{

if(i<(NumCoef/2 - 1)) Outbuffer[i] = Inbuffer[i];

else

{

for(BYTE j = 0;j<(NumCoef/2);j++)

if(Type == FALSE)

Temp += (int)(Inbuffer[i-j]*(short)QuantizCoeficients[j]);

else

Temp += (Inbuffer[i-j]*QuantizCoeficients[j]

-Outbuffer[i-j]*QuantizCoeficients[j+NumCoef/2]);

if(Temp>0)

Outbuffer[i] = (short)( Temp >> (15+PreCoef) );

else

Outbuffer[i] = -(short)( (-Temp) >> (15+PreCoef) );

}

Temp = 0;

i++;

}

}

, , ( ), .

.

( ), 2. , , SetTimer. 2 WM_TIMER. NULL , , , . OnTimer.

void CNewvisualDlg::OnTimer(UINT nIDEvent)

{

if(Flag == true)

{

if(m_dlgPaint.NPoints == 500)

m_dlgPaint.NPoints = (m_dlgPaint.x2 - m_dlgPaint.x1);

else

{

m_dlgPaint.NPoints+=(m_dlgPaint.x2 - m_dlgPaint.x1);

m_dlgPaint.PointCounter+=(m_dlgPaint.x2 - m_dlgPaint.x1);

}

m_dlgPaint.rect.left = m_dlgPaint.x1-5;

m_dlgPaint.rect.right = m_dlgPaint.x1;

m_dlgPaint.rect.top = m_dlgPaint.y1;

m_dlgPaint.rect.bottom = m_dlgPaint.y2+10;

CRect rect2;rect2.CopyRect(&m_dlgPaint.rect);

rect2.SetRect(0,0,(m_dlgPaint.rect.right-1),

m_dlgPaint.rect.bottom);

m_dlgPaint.InvalidateRect(&rect2);

}

if(m_dlgPaint.rect.right >= m_dlgPaint.x2) Flag = true;

if(m_dlgPaint.Counter < m_dlgPaint.NPoints)

{

m_dlgPaint.Counter+=5;

m_dlgPaint.rect.left+=5;

m_dlgPaint.rect.right+=5;

Flag=false;

}

else Flag = true;

if(m_dlgPaint.NPoints>=8000)

{

Flag = true;

m_dlgPaint.NPoints= 500;

m_dlgPaint.Counter = 0;

m_dlgPaint.PointCounter = 0;

}

m_dlgPaint.InvalidateRect(&m_dlgPaint.rect);

CDialog::OnTimer(nIDEvent);

}

QRS .

QRS , . . QRS, , ( 8000 )

//

//

if(m_dlgPaint.StartOtv[0] == 0) return;

INT disp,amp;

memset(m_dlgPaint.DifFlag,0,8000);

for(i=0;i<8000;i++)

if(CalcPoint(m_dlgPaint.StartOtvFilt[i],&disp,&amp))

{

m_dlgPaint.DifFlag[i-disp] = 1;

}

4.

 

. , / . . , , , . , . . ( ) , , . , , . , , . , , , . K , :

= - K

, , , , .

, . . , , . , K , .

K , , , . K, , :

( , ) - K;

, - S;

, , , .. - K;

K.

:

= - K - S - K - K


K

- , .

K () :

, , - K1;

- - K2;

, - K3;

, - K4;

- - K5.

K1 K2 . K3 K4 , . . .

K1 . . K1 . K1 () - ij, i- j- . , :

, K1 :

, , ;

, ;

, , ;

, . , . . ij j- i- . .

, .

.

, . . , .

: ( . [1] )

, .

, , . , . , . 13 :

: 50% , :

14 = (1.14 * (1 - )1/2)-1

- ( ).

. , 1 10 15 1.5-2 . :

15 1 1.5.

: , , :

.

. - 30 - 40% (31=0.6-0.7).

, , , 1 .

32 = 1.

. ++, , 50% (33= 0.5).

, . .

34 = 1.

, .

, . .

. 20-30%.(41 = 0.7 - 0.8).

, . 10-20% (42 = 1.1-1.2)

, .

. (52=0.7), - (51=0.8). 3 (53 = 0.9)

, (54=1.2).

- .

- 2 . - :

;

K2p , , , .

.

K3p . , , .

, .

, - 4 , .

:


4 = 41 = 41*.

41 - .

 

, S 1 .

, S

1000 ./ .
, 3000

, 41

5 ./

, T

4 .

, ,

3 /

- 11 = lg(3000 * 10-3)=0.47;

-

14 = (1.14 * (1 - )1/2)-1 = 2.7;

- 31 = 0.7;

- 33 = 0.5;

- 41 = 0.8;

- 42 = 1.1;

- 51 = 0.7;

- 52 = 0.8;

- 53 = 0.9;

- 54 = 1.2;

.

=3000 ();

P = / = 3000/88=34.1 (/);

, , , 22 , S = 45,45 (.);

ij - ij Cij = 0.245;

, :

- ;

;

;

.

,

k = 90% ;

k = 29%;

k = 41%.

- 1 :

K1 = * ijCij * S * S * 1.5 / P = 3000 * 0.245 * 45,45* 1 * 1.5 /34.1 = 1474 ().

, .. . .

= 88 ();

:

4 = 41* * T = 5 * 88 *3 = 1320 ()


.

(.) %

K1

1474 53%

K4

1320 47%

K = 2794 .

, 2794 . . . .

, , , .

 

5. -

, . , , , . , , .

, , .

, , : , , , , .. , , , , . .

, , , , , , . , .

, , , , . , .

, , , .

, .

() , - .

. , . () 1-6 . , , , . , . ( ) 72 .

, . , - , - ( ), , , , , , . , (r = 0,83) . :

 

(6.1)
Y - ,

 

X - .

 

. , , , , . , .

5.1.

-
. .
1. 1
2. 1
3. (). . 3

4. ,

5
5. , % 90% 5
6. , , ( ) 1
7. () 1
. -

8. , 0

20 0

1
9. 1
10. 1
1. 1
12. () 1

: X = 22

, 12 .

: Y = 2,15 * 22 - 10,3 = 37 ..

10 54 ..

, , 40 .. . 0 25 .. , 26 40 .. - 40 .. - .

, . (. 5.1),

. 5.1 .

 

,

. ? , , - . , . .

, , , .

. , , , .

() , - . , , .

, . 27954-88 5 41- 0,03 /. , .

:

, , , ;

:

70 ( - 30 );

- 1.2 ;

.

(, , ), . 220, , - , , . , , . , , , .

12.2007-75 , .

( 150-200, 220(+/-15), I=0,5, , R=4). , , , , . , . , , .

, , , , .

: (, ) 4-79. : , .

, ( 1,0 , , ), 300 .

:

, , ;

, ;

- ;

60 ;

;

, , ;

, .

, . 3223-85 , 50 . ( ), .

4088-86 " " :

, : 22-24 ; 0.1 /; 40-60%; 21 25 .

, : 23-25 ; 0.1-0.2 /; 40-60%; 22 26 .

. . .

- , - , , , .

. 4 ; , 5-10 , .

:

,

,

,

,

,

.

, , . , , . 2/3 . 10-20 , , . , , .

, 15 , - 4.5 ..

20 30 ./ , 20 - 40 - 20 ./. .

, , 47.5 . 156.5 . :

 

) N < 47.5 / 4.5 = 10.5

) N < 156.5 / 15 = 10.4

, .

.

:

1. , [>23 /3] t = 20 - 22 C ;

2. : 156.5 .

3. :

SK-3142- K1=2 .- W1=150

IBM PC/AT- K2=2 .- W2=250

5-75- K3=2 .- W3=60

1-103- K4=2 . - W4=130

5-46- K5=1 .- W5=400

5-47- K6=2 .- W6=150

7-40- K7=3 .- W7=30

5. : n = 7.

- , .

L'=203/ . .

,

 

L1 = n * L' = 7 * 20 = 140 3/.

 

:

 

Q

L2= ,

*c*( t-t )

 

Q - /;

p - - 1,2 /3;

c - - 1 / ;

t - , ;

t - , .

t :

 

t=t + t(H-L) ,

 

t - ;

H - ;

t - (0,5 - 1,5 C/);

L - .

, :

 

Q = 3600*(W1*K1 + ... + W7*K7) = 3600*(2*150+2*250+2*60+2*130+1*400+2*150+3*30) = 3600*1970 / = 7092 /

 

:

Q = 7 * 355 / = 2485 /.

:

 

Q = Q + Q = 7092 + 2485 = 9577 /.

 

:

t = 22 C+1,5 (2,2-1 ) = 24 C.

t=20 C.

9577

L2 = = 1995 3/

1,2*1*(24 - 20)

, , 1995 3/ . 1-2-04 - --4 4-51, 2000 3/. 20 .

, , , .

, , , , , .

, , .


, , . R .

.

- , .

. , .

- .

, , , .


 

1. . . . : .-1966.-270

2. . Visual C++ 6. . : 2000.

3. . . .- .: .-1981.-166.

4. . . . // : << >>.-1996.-1.-. 18-23.

5. Alan Oppenheim and Roland Schafer, Discete-Time Signal Processing, Prentice-Hall, ISBN 0-13-216292-X, 1989.

6. ANSI-AAMI EC18-1982 American National Standart for Diagnostic electrocardiographic Devices, American Association for the Advancement of Medical Instrumentation. Arlington, Virg.-1983.

7. Bailey J. J., Berson A. S., Garson A., et al. Recommendation for standartization and specification in automated electrocardiography: bandwidth and digital signal processing: A report for health professionals by en ad hos writing group of the commitee on electrocardiography and cardiac electrofisiology of the Council on Clinical Cardiology.-American Heart Association.-Circulation.-1990.-V. 81. 730p.

8. . . . . : .-1974.-504.

9. BORLAND C++ 5. K.:, 1996. -576 . ISBN 966-506-030-9.

10. Editor-in-Chief Joseph D. Bronzino, The Biomedical Engineering Handbook, IEEE PRESS, pp 801-917.

. .

 

 

 

! , , , .
. , :