Sunteți pe pagina 1din 58

Mihai Tr

INFORMATIC MEDICAL
Vol. I

Editura SITECH,
Craiova, 2010

2010 Editura Sitech Craiova


Toate drepturile asupra acestei ediii sunt rezervate editurii. Orice
reproducere integral sau parial, prin orice procedeu, a unor pagini
din aceast lucrare, efectuate fr autorizaia editorului este ilicit i
constituie o contrafacere. Sunt acceptate reproduceri strict rezervate
utilizrii sau citrii justificate de interes tiinific, cu specificarea
respectivei citri.
2010 Editura Sitech Craiova
All rights reserved. This book is protected by copyright. No part of
this book may be reproduced in any form or by any means, including
photocopying or utilised any information storage and retrieval
system without written permision from the copyright owner.

Editura SITECH din Craiova este acreditat de C.N.C.S.I.S. din


cadrul Ministerului Educaiei i Cercetrii pentru editare de carte
tiinific.

Editura SITECH Craiova


Str. Romul, Bloc T1, Parter
Tel/fax: 0251/414003
E-mail: sitech@rdslink.ro

ISBN
ii

Cuprins
Cuvnt nainte ..........................................................vii
1. INTRODUCERE ................................................... 1
1.1 Informaie ........................................................... 2
1.2 Cunoatere ......................................................... 4
1.3 Prelucrarea informaiei ........................................ 5
1.4 Informatica ......................................................... 5
1.5 Momente de referin .......................................... 7
1.6 Informatica medical ......................................... 10
2. CALCULATORUL NUMERIC PRINCIPII ............17
2.1 Reprezentarea informaiilor numerice ................ 19
2.2 Reprezentarea informaiilor nenumerice ............ 22
2.3 Operaii logice ................................................... 24
2.4 Codificarea binar a informaiei grafice .............. 26
2.5 Structura i funcionarea calculatorului
numeric ................................................................... 27
2.6 Mic istoric ......................................................... 36
3. DISCUL MAGNETIC. ORGANIZAREA INFORMAIEI. FIIERE ...................................................42
3.1 Structuri de date ............................................... 44
3.2 Structuri de date interne ................................... 45
3.3 Structuri de date externe ................................... 45
3.4 Discul dur (hard disk) ....................................... 46
4. SISTEME DE OPERARE. DOS. WINDOWS. ..........50
4.1 Ce este un sistem de operare ............................. 50
4.2 DOS .................................................................. 51
4.2.1 Comenzi ........................................................ 52
4.2.2 ncrcarea sistemului de operare DOS ........... 67
4.2.3 AUTOEXEC.BAT ........................................... 69
4.2.4 CONFIG.SYS ................................................ 70
4.3 WINDOWS ........................................................ 71
5. INTERNET ........................................................90
iii

6. HTML ...............................................................99
6.1 Planificarea unui sit ........................................ 101
6.2 Proiectarea i crearea coninutul sitului .......... 102
6.3 Organizarea coninutului sitului ...................... 103
6.4 Crearea paginilor sitului .................................. 103
6.5 Alegerea unui nume de domeniu ..................... 103
6.6 Gsirea unei gazde pentru sit .......................... 104
6.7 Instalarea i ntreinerea sitului ...................... 105
6.8 Promovarea sitului .......................................... 105
6.9 HTML .............................................................. 106
7. VIRUSURILE INFORMATICE ...........................126
8. ALGORITMI. LIMBAJE DE PROGRAMARE........140
8.1 Algoritm .......................................................... 140
8.2 Program ......................................................... 141
8.3 Simboluri grafice ............................................. 144
8.4 Structuri de control ......................................... 147
8.5 Enunuri de ciclare ......................................... 151
8.6 Limbajul BASIC. Exemple de programme ......... 154
8.7 MATLAB ......................................................... 163
9. PROBABILITI. PARAMETRI STATISTICI.
DISTRIBUII ......................................................... 195
9.1 Probabilitate ................................................... 196
9.2 Variabile aleatoare .......................................... 197
9.3 Parametri statistici .......................................... 200
9.4 Teste statistice. Testul t. Analiza variaiei ........ 205
9.4.1 Teste unilaterale i bilaterale ....................... 208
9.4.2 Analiza varianei ........................................ 212
9.4.3 Variana n interiorul grupelor ..................... 213
9.4.4 Comparaie ntre testul t i analiza
varianei ................................................................ 214
9.4.5 Exemple ...................................................... 214
9.5 Regresia liniar ............................................... 219
9.6 Programe pentru aplicaii de statistic
medical ................................................................ 223
iv

10. BAZE DE DATE MEDICALE ............................ 229


10.1 Baze de date relaionale ................................. 233
10.2 Exemple ........................................................ 236
10.3 Baze de date orientate pe obiect .................... 243
10.4 Proiectarea i implementarea bazelor de
date ....................................................................... 246
10.5 Aplicaii ale bazelor de date n sntate ......... 249
ANEXE
A1. HTML ............................................................ 283
Director WS1 ....................................................... 283
Director WS2 ....................................................... 284
Director WS3 ....................................................... 284
Director WS4 ....................................................... 285
Director WS5 ....................................................... 285
Director WS6 ....................................................... 286
Director WS7 ....................................................... 287
Director WS8 ....................................................... 288
Director WS9 ....................................................... 289
Director WS10 ..................................................... 290
Director WS11 ..................................................... 292
Director WS12 ..................................................... 293
Director WS13 ..................................................... 295
Director WS14 ..................................................... 297
Director WS15 ..................................................... 298
Director WS16 ..................................................... 300
Director WS17 ..................................................... 302
A2. MATLAB ......................................................... 305
Referine bibliografice ......................................... 306

vi

Cuvnt nainte
Cartea urmrete n general cursul de Informatic
medical de la Universitatea de medicin i farmacie din
Craiova. Ea nglobeaz, n maniera de abordare, i n
coninut experiena didactic pe care am acumulat-o
nc din toamna anului 1990 cnd am nceput s
predau informatica medical la Facultatea de Medicin
din Craiova, constituind astfel prima disciplin de
Informatic medical cu statut oficial din ar, moment
n care de fapt a fost oficializat i transferat i n zona
didacticului
spre
a
fi
diseminat,
cu
efecte
multiplicatoare evidente, o activitate desfurat de
mine fr ntrerupere, cu pasiune, nc din 1974, din
perioada studeniei, cnd am descoperit vraja
mecanismelor viului.
n carte se regsesc lucrurile bune prezente n prima i a
doua ediie a crii Informatica medical (Tr, 1997,
2006). Cartea beneficiaz de experiena mea didactic i
de cercetare, mult mai mare acum, mai ales prin plusul
de experien ctigat prin lucrul direct n cercetare
tiinific i educaie att n Europa ct i n SUA.
Demonstrm astfel faptul c un curs este un produs
dinamic; el nu trebuie s stea pe loc, pentru c moare.
De cte ori apare o nou carte, care distileaz ce este
bun n precedenta i aduce ceea ce este nou, ea devine
alt carte. n cteva ediii de acest fel ar trebui s nu
mai recunoti o carte, ea este mereu alta, dar ceva
rmne totui: spiritul ei, fluena, personalitatea.
Scopul unei cri de acest fel este s ncercm s
transmitem din realizrile noastre n munca didactic i
de cercetare, s mprtim studenilor, dar i oricrui
alt cititor, ceva din zbaterea gndului, din ceea ce am
nvat n cursul unei munci continue, s-i ajutm s
evite prin experiena noastr mcar unele din eecuri, i
vii

mai ales s-i ajutm s ajung mai repede la succes.


Scopul este s formm, mai mult dect s informm.
Din acest motiv, spre deosebire de alte multe cri, aici
nu sunt descrise pachete de programe, n detaliul lor.
Acest aspect practic al activitii unui utilizator al
calculatorului, nvarea folosirii calculatorului i a unor
programe specifice, este rezolvat la noi n cadrul
lucrrilor practice.
Din acelai motiv, spre deosebire de alte orientri, nici
nu ne-am propus s-i nvm pe studeni un limbaj
anumit de programare n detaliu, ci mai ales ce este un
limbaj, care sunt elementele logice, crmizile cu care
poi construi apoi orice, cum abordm o problem, i
care este calea pn ce ea ajunge s fie rezolvat de
calculator. Elementele de baz, pe care le prezentm
pentru mediul MATLAB, ntr-un mod sper plcut i
abordabil, sunt utile oricui, chiar fr experien n
programare, pentru a se narma cu un instrument de
lucru pentru toat viaa. De ce am ales MATLAB? Pentru
elegana, facilitatea de a-l aborda de la zero, viteza de
nvare deosebit fa de alte limbaje, pentru interfaa
sa grafic prietenoas i plcut, n fine, pentru eficiena
sa. Este un limbaj potrivit pentru oricine, dei este un
limbaj de nivel nalt.
Prima parte a crii, este dedicat iniierii, n sensul
lmuririi conceptelor de baz, formrii unui limbaj
specific, construirii elementelor logice funcionale care
s le permit cititorilor abordarea ulterioar a
domeniului de pe un nivel superior. Acesta este i
motivul pentru care cartea de fa apare n dou volume.
Dup pregtirea pe care o face primul volum, volumul al
doilea prezint domeniul informaticii medicale prin
direciile sale specifice: achiziia i prelucrarea
viii

biosemnalelor i imaginilor medicale mpreun cu


noiuni de stereologie, diagnosticul asistat de calculator,
modelarea asistat de calculator n medicin, sisteme
informatice medicale, etc. Aa cum este conceput,
volumul II ar trebui s fie interesant i pentru cititorul
cu formaie tehnic, i s-i ofere dac nu soluii ale unor
probleme, atunci mcar nite ci i instrumente de
abordare.
Pe
lng
justificarea
structurii
i
funcionrii
calculatorului numeric bazat pe principiul Von
Neumann, adic a calculatorului curent folosit,
incluznd clasa cea mai larg rspndit a calculatoarelor personale, precum i lmurirea conceptului de
sistem de operare, focaliznd pe Windows, volumul I
aduce n discuie subiecte de mare utilitate: Internet,
Virusurile Informatice, limbajul HTML, programarea
calculatoarelor de la concept la rezolvarea concret a
unor probleme, noiuni de statistic, baze de date. Sunt
subiecte de utilitate n orice domeniu de activitate, cu
att mai mult n domeniul medical.
Personal am preferat totdeauna crile care, n loc de
clasificri, ofer elemente logice. Sper s fi reuit ntr-o
oarecare msur, ca prin aceast carte s stimulez
ntrebri, mai mult dect s dau rspunsuri.
Aa cum este greu s ncepi, este tot att de greu s i
termini. A vrea s considerm c tot ce este scris aici
sunt nite semine puse la ncolit, i dac mcar nite
ntrebri vor rezulta, munca nu a fost degeaba.
nseamn c voi fi reuit s dau i nite rspunsuri.
Prof. Dr. Ing. Mihai Tr
Craiova
Ianuarie 2010
ix

Mihai T Tr
Profesor, Universitatea de medicin i farmacie din Craiova 2000 prezent
Profesor Invitat, Instituto de Fisiologia, Lisboa, Portugal 2005
Profesor Invitat, Iowa State University, Ames, Iowa, USA 2002-2003
Profesor Invitat, Universitaet der Bundeswehr, Munchen, Germany 2001
Profesor Invitat, Instituto de Fisiologia, Lisboa, Portugal 2001
Research Fellow, Catholic University of Leuven, Belgium 1998-1999,
Profesor Invitat, University of Patras, Greece 1996-1997
Lector invitat, University of Leeds, Leeds, England 1993

Cartea este destinat n primul rnd studenilor Facultii de Medicin, dar i


oricror cititori cu o formaie netehnic, cu sperana c va reui s transmit
acele cteva elemente de baz pentru a demistifica un instrument omniprezent
acum, dar i destul de controversat: calculatorul, i un domeniu exploziv:
informatica.
n acelai timp, prin anumite elemente, ea util i celor cu formaie tehnic,
prin abordarea unor subiecte de baz poate ntr-o alt lumin, ceea ce
stimuleaz ntotdeauna legturi logice noi.
Autorul

Informatic medical

Mihai Tr

8. ALGORITMI. LIMBAJE DE PROGRAMARE.


Rezumat Dac am reuit s demistificm pn acum
calculatorul n structura sa i s contientizm c o
main principial foarte simpl poate fi n stare s fac o
multitudine de lucruri complicate fr a fi nevoii s-i
modificm structura, este momentul s demistificm i
aceast activitate prin care punem maina la treab:
progamarea calculatorului.

Fr s ne propunem abordarea n detaliu a unui


limbaj de programare, lucru care ar depi
obiectivele propuse de aceast carte, este credem
foarte util s discutm unele aspecte ale drumului
ntre o problem de rezolvat i rezolvarea sa efectiv
cu ajutorul calculatorului numeric. Discuia este
necesar i pentru a demistifica o activitate care,
dei extrem de complex, este totui uman
abordabil, de ctre oricine.
Nu putem rezolva corect o problem (orice
problem) fr s cunoatem foarte bine datele
iniiale, scopul i fr a dispune de o cale logic de
rezolvare, care s cuprind toi paii logici necesari.
8.1. Algoritm
Aceast secven finit de operaii (toi paii logici
necesari pentru a soluiona problema), ordonat i
complet definit, care pornind de la date (intrri)
produce rezultate (ieiri) este un algoritm.
Un algoritm are mai multe atribute eseniale:
s fie bine definit, deci riguros i fr
ambiguitate;
2

Informatic medical

s fie descris exact;


s fie efectiv, adic s rezolve problema ntr-un
numr finit de pai;
s fie universal, adic s permit rezolvarea
unei clase de probleme.
Deci rezolvarea unei probleme implic obligatoriu
rezolvarea ei logic, construirea algoritmului,
urmnd ca, n cazul n care dorim, sau suntem
obligai de complexitatea ei, s o rezolvm cu
ajutorul calculatorului, s i-o transmitem acestuia
spre rezolvare sub form de program folosind n
acest scop un limbaj de programare (Figura 8.1.1).

Figura 8.1.1. De la problem la soluia ei, drumul


trece prin construirea algoritmului i transcrierea lui
ntr-un limbaj de programare, astfel nct s poat fi
executat de calculator.

Prin urmare programul nu este altceva dect


secvena de aciuni necesare pentru rezolvarea
problemei, codificate ntr-un anumit fel astfel nct
s-l neleag calculatorul.
Tot aa transpunem noi n viaa de zi cu zi aciunile
noastre n limbaj natural.
8.2. Program
Un program este o unitate software, o unitate de
execuie capabil s-i prelucreze datele fiind
dependent numai de sistemul de operare.
3

Mihai Tr

Un sistem de programe este o unitate software


constituit din mulimea programelor n cadrul
unei aplicaii, relaiile dintre ele fiind determinate
de intercondiionarea prelucrrilor.
Odat construit algoritmul, pasul urmtor este
transpunerea lui ntr-un program, numit program
surs mai apropiat de modul de comunicare uman,
urmnd translatarea programului n instruciunimain, accesibile calculatorului, astfel nct acesta
s poat rezolva efectiv problema.
De exemplu, fiind dat ca problem rezolvarea
ecuaiei de gradul I, programul scris de noi ntr-un
limbaj de programare, de exemplu MATLAB, este
program-surs,
iar
prin
intermediul
unui
interpretor, mediu de programare (MATLAB n acest
caz) sau a unui compilator (dac programul ar fi
fost scris n FORTRAN sau PASCAL) acesta este
transformat n cod-main, instruciuni-main pe
care calculatorul le "nelege " i le execut.
Ca i limbajele naturale, limbajele de calculator
(artificiale) au un vocabular i un set de reguli
(gramatic).
Elemente ale unui program:
CARACTERUL este cea mai mic unitate
structural a unui program; ca exemplu caracterele
alfanumerice, numerice, speciale.
TOKEN-ul - const dintr-un caracter sau grup de
caractere; de exemplu identificatorii; pentru
rezolvarea ecuaiei de gradul I folosim variabilele A,
B, X.
4

Informatic medical

Mai folosim cuvinte-cheie: IF,THEN.


EXPRESIA - are o mare varietate, ea
compunndu-se din variabile i constante unite
prin operatori: A=0 este un exemplu de expresie.
ENUNUL (instruciunea):
- declarativ, descrie datele asociate unui
program;
- executiv, descrie operaii de executat
asupra unor date.
Putem defini acum un program ca o mulime de
enunuri:
enun structurat, care include alte
enunuri:
IF A==0 THEN B==C
enun compus: BEGIN
BLOCUL - delimiteaz domeniul de valabilitate al
identificatorilor, nct ei nu au aceeai semnificaie
n tot programul (de exemplu n PASCAL):
BEGIN integer X,Y;
BEGIN real A;
BEGIN boolean X,C;
END
END
END
PROCEDURA- (subrutina, subprogram) const
dintr-o mulime finit de instruciuni.
5

Mihai Tr

Ea poate fi apelat de mai multe ori n cadrul unui


program. Putem defini programul de rezolvare a
ecuaiei de gradul I ca procedur i-l putem chema
ca atare ori de cte ori va fi nevoie s rezolvm o
ecuaie de gradul I ntr-un program mai mare.
PROGRAMUL - este o entitate ce poate fi
executat pe un calculator.
Dup ce ne-am fcut o idee despre componentele
unui program, este momentul s ne ntoarcem la
algoritmi, pentru a preciza construirea algoritmului
pentru rezolvarea unei probleme i transpunerea ei
pe hrtie.
8.3. Simboluri grafice
n acest scop dispunem de un set de simboluri
grafice:
Figura 8.3.1. Legtur logic

Simbolul din figura 8.3.1 leag blocurile, leag


unele puncte ale unei scheme logice.

Figura 8.3.2. Conector

Simbolul din figura 8.3.2 este un conector pentru


trecerea la alt pagin, n cazul programelor
complexe a cror diagram logic se ntinde pe
pagini multiple.
6

Informatic medical

Figura 8.3.3. Bloc delimitator (START, STOP)

Simbolul din figura 8.3.3 (bloc delimitator)


marcheaz nceputul i sfritul unei uniti
program, de exemplu START, STOP.

Figura 8.3.4. Bloc de intrare/ieire


(include operaii de transfer de date
ctre dinspre calculator)

Figura 8.3.5. Bloc de calcul (include


prelucrri efective ale datelor)

Figura 8.3.6. Bloc de procedur


(include proceduri).

Figura 8.3.7. Blocuri de decizie


(include salturi condiionate)
7

Mihai Tr

:=
Figura 8.3.8. Semn de atribuire

Folosind aceste simboluri, paii logici ai rezolvrii


unei probleme - rezolvarea ecuaiei de gradul 1ax + b = 0 cu soluia x = b , dac a 0.
a
se transpun grafic simplu ntr-o schem (diagram)
logic (Figura 8.4.1).

Figura 8.4.1. Diagrama logic pentru


rezolvarea ecuaiei de gradul I

8.4. Structuri de control


Aa cum vedem n acest exemplu simplu, operaiile
se nlnuiesc una dup alta, n ordinea precizat
de algoritm prin diagrama logic, cu excepia unor
8

Informatic medical

puncte de salt, determinate


prin structuri de
control. Acestea constituie ntr-un limbaj de
programare mijlocul prin care se realizeaz salturi
(ramificri) condiionate i necondiionate.
a. Cel mai simplu enun de control este GO TO (sari
la) etichet. l gsim i n programul corespunztor
diagramei din Figura 8.4.1, scris n limbajul BASIC.
El realizeaz un salt necondiionat.
10
20
30
40
50
60
70

INPUT A, B
IF A = 0 THEN GO TO 60
LET X = - B / A
PRINT X
GO TO 70
PRINT " A = 0 "
STOP

n acest mic program, instruciunea GO TO 70


ordon procesorului ca urmtoarea instruciune s
fie cea de la linia 70, adic STOP. Cum vedem, n
acest fel a fost srit linia 60.
Instruciunea de salt GO TO nu este prezent
n toate limbajele de programare. Dimpotriv,
recurgerea la ea nu este recomandat, i este o
reclam proast pentru un programator.
Ce face de fapt programul de mai sus? Citete de la
tastatur variabilele A, B (linia 10), dac A=0 atunci
tiprete acest lucru i termin programul, dac A
este diferit de 0, atunci calculeaz soluia ecuaiei X
= - B / A (linia 30) i afieaz rezultatul.
b. Enunul IF (dac), are dou forme:
9

Mihai Tr

condiie
enun 1
enun 2
IF ---------- THEN --------- ELSE --------sau
condiie
IF ---------- THEN enun ,
crora le corespund schemele logice de mai jos
(Figura 8.4.2). Obs. (THEN nseamn atunci, ELSE
nseamn altfel).

Figura 8.4.2. Salturi condiionate IFTHEN (stnga)


i IFTHEN ELSE (dreapta). Sgeile indic fluxul
normal al programului.

n cazul lui IF THEN ELSE, n funcie de


ndeplinirea condiiei fluxul programului este
ndreptat spre un enun (Enun 1) sau altul (Enun
2) ceea ce face aceast instruciune de salt
condiional mult mai puternic dect forma simpl
10

Informatic medical

IF THEN.
n limbajul MATLAB, THEN lipsete, astfel nct
dup condiie urmeaz direct instruciunea care
trebuie executat n cazul ndeplinirii condiiei.
Remarcm tendina de simplificare a limbajelor,
important pentru a lsa gndirea programatorului
liber pentru a focaliza pe rezolvarea problemei, nu
pe amnunte de programare.
n MATLAB exist instruciunea ELSEIF, care,
urmnd repetat dup un IF, implic testarea mai
multor condiii. Vom reveni la aceste amnunte n
continuare, cnd ne vom ocupa de MATLAB.
c. Enunul CASE (enun n PASCAL ) :
enun
expresie ntreag
------- CASE ------------------- OF
lista enunuri
END
Exemplu :
CASE i OF
e1
e2
.
.
en
END
n acest exemplu, dac i=1 se execut instruciunea
e1, dac i=2 se execut instruciunea e2, .a.m.d.
Iat un alt exemplu:
var i : integer.
case i of
11

Mihai Tr

o:x:=o
1 : x : = sin(x)
2 : x : = cos(x)
3 : x : = exp(x)
end.
Cu explicaia de mai sus, este clar c n funcie de
valoarea lui i se execut una din instruciunile
corespunztoare valorii lui.

Figura 8.4.3. Diagrama logic pentru CASE

Diagrama logic pentru enunul CASE este dat n


Figura 8.4.3.
Enunul CASE s-ar exprima ntr-o formulare cu IF
astfel (n BASIC):
IF i=1 THEN e1
ELSE IF i=2 THEN e2
.
.
ELSE IF i=n THEN en
Vom vedea n continuare principiul de ciclare, cel
care d cu adevrat for calculatorului. Fora
acestei maini const tocmai n posibilitatea de a
12

Informatic medical

face repetat aciunile necesare, cu mare vitez.


8.5. Enunuri de ciclare
Calculatorul este cu att mai preios n cazuri n
care o operaie trebuie executat repetitiv. n acest
scop exist enunuri de ciclare n aproape toate
limbajele de programare.
Instruciunile din corpul ciclului se execut
repetitiv, de n ori, adic pn cnd variabila de
ciclare i iniializat cu 1 la nceput, ia valoarea n
specificat (Figura 8.5.1).

Figura 8.5.1. Diagrama logic pentru instruciunea de


ciclare FOR...NEXT (n BASIC), FOREND (n MATLAB).

Definirea ciclurilor (bucle n care o secven de


operaii se execut repetitiv, de un numr de ori,
sau pn cnd este ndeplinit o anumit condiie)
necesit evaluarea unei condiii pentru a determina
momentul transferului controlului n afara ciclului,
13

Mihai Tr

adic ieirea din ciclu - n exemplul de mai sus


(Figura 8.5.1) se evalueaz dac variabila de ciclare
i a ajuns la valoarea programat n.
O form simpl (n BASIC) este :
FOR (pentru)...NEXT (urmtorul)
FOR i=1
enun
NEXT I

TO

20

ntr-o alt form (Figura 8.5.2)


WHILE Condiie DO enun ,
sau n traducere liber:
"Execut enunul e, ct timp este adevrat
condiia C".
Dup cum vedem, ntr-un ciclu WHILE numrul de
pai nu este cunoscut; el va fi determinat de
momentul ndeplinirii condiiei C.

Figura 8.5.2. Diagrama logic pentru instruciunea


de ciclare WHILE Condiie DO enun.
14

Informatic medical

n cazul unor programe mai complexe este util


crearea unor subprograme. n MATLAB acestea se
numesc funcii (function).
Acestea permit reducerea efortului de programare
prin reutilizarea lor de oricte ori este necesar, prin
controlul mai eficace al programelor, permit
extinderea limbajelor prin definirea de noi enunuri,
noi funcii intrinseci, i modularizarea programelor.
Altfel spus, odat definit o astfel de funcie, ea
poate fi reutilizat ca o unealt disponibil. Altfel, ea
ar trebui rescris de fiecare dat cnd este necesar.
n felul acesta programele devin mai simple i mai
uor de scris, de depanat i de gestionat.
Cu elementele prezentate mai sus clare, considerm
c oricine poate aborda nvarea efectiv a unui
limbaj de programare specific, oricare ar fi el.
Desigur ntre diferitele limbaje de programare sunt
i diferene principiale i structurale, dar totui
ceea ce le leag pe toate este logica uman i unele
mecanisme fundamentale, ca cele pe care tocmai leam prezentat.
n materie de limbaje de programare, funcioneaz
acelai principiu care este valabil n limbajele
naturale: cu ct tii mai multe, cu att mai uor
nvei un altul.
Aa cum ai vzut, fa de limbajul natural pe care-l
folosim zi de zi n comunicarea uman, limbajele de
programare a calculatoarelor sunt primitive, adic
simple i la ndemna oricui s le nvee i s le
foloseasc - sunt srace n vocabular i cu o
gramatic foarte simpl.
15

Mihai Tr

8.7. MATLAB
Rezumat Pentru cei interesai, pentru studeni, cadre
didactice,
doctoranzi,
cercettori,
prezentm
ca
introducere lucrativ i direct orientat practic un limbaj
de programare remarcabil, a crui nvare poate pleca
de la zero, care ne poate duce la o eficien deosebit
ntr-un timp scurt i care este nc inegalabil ca
eficien
n
orice
activitate
uman
n
care
experimentarea, modelarea, prelucrarea datelor trebuie
s in pasul cu gndirea. Este vorba despre MATLAB
(Mathworks, USA).

Cred c cel mai plcut este s construim elementele


de baz ale unui nou mediu de programare pornind
de la un exemplu cu care, lucrnd, vom nva
progresiv.
Tabelul 8.7.1 conine temperaturile a zece pacieni,
msurate n zece zile consecutive, la aceeai or.
Vom nva s folosim mediul MATLAB folosind
aceste date n diverse feluri.
Tabelul 8.7.1.
Temperatura a zece pacieni n zece zile consecutive (oC)
Nr.
1
2
3
4
5
6
7
8
9
10

Z1
39.9
38.3
37.9
38.1
37.8
39.3
37.4
38.2
40
39.1

Z2
38.7
38.5
37.8
37.7
37.6
38.5
37.6
38.3
39.6
38.5

Z3
38.9
37.9
38.1
38
37.9
38.8
37.3
38.1
39.4
38.2

Z4
38.2
37.6
37.6
37.4
37.2
38.1
37.2
37.7
39.5
38.4

16

Z5
38.5
38
37.5
37.3
37.4
37.8
37.1
37.8
39.1
37.9

Z6
37.8
37.7
37.6
37.3
37.1
37.4
36.9
37.3
38.7
37.5

Z7
38.2
37.1
37.3
37
36.9
37.1
37
37
38.3
37.2

Z8
37.7
36.9
37
36.8
36.7
36.9
36.7
36.5
37.9
37

Informatic medical

Dar pentru nceput s vedem cum ajungem la


MATLAB. Desigur avem nevoie de un calculator n
care MATLAB s fie instalat. Dac ne uitm pe
ecran (desktop) pe un calculator pe care s-a instalat
mediul MATLAB, vom vedea iconul din figura 8.7.1.

Figura 8.7.1. Iconul MATLAB cu versiunea 6.5.


Intotdeauna apare versiunea curent instalat.

Figura 8.7.2. Fereastra MATLAB. Observai


fereastra de lucru n dreapta
17

Mihai Tr

(Command Window).

Lansnd aceast aplicaie, ca pe orice program, cu


dublu click pe butonul din stnga al oarecelui,
MATLAB se va activa ntr-o fereastr (Figura 8.7.2).
n dreapta ei este fereastra de lucru, iar n stnga
spaiul de lucru, respectiv istoria comenzilor
folosite, n ordine.
S remarcm simbolul << care semnific faptul c
acolo se poate scrie i executa (prin ENTER) o
comand el se numete, ca i n sistemul de
operare, prompter i ne spune c maina ateapt o
nou comand.
n fereastra Command History (stnga jos) apar
succesiv, n ordine, toate comenzile.
n fereastra Current Directory se specific fie direct,
fie cu browse (butonul din dreapta ferestrei)
directorul curent. Comanda dir, va afia n fereastra
de lucru coninutul directorului curent.
n fereastra de lucru s scriem (Figura 8.7.3):
p1=[39.9 38.7 38.9 38.2 38.5 37.8 38.2 37.7]
Apoi apsm ENTER. Rezultatul se vede n figura
8.7.3 i anume un vector linie al unui tablou
simplu, cu 8 coloane, numerotate de la 1 la 8. Iat
c putem interpreta irul de temperaturi ale
primului pacient p1 ca un vector linie.
Suntem desigur familiarizai cu noiunea de
matrice, ca tablou de date. n general suntem
18

Informatic medical

obinuii
s
gndim
matricea
ca
tablou
dreptunghiular, cu mai multe linii i mai multe
coloane. Un tabel este un astfel de tablou. Liniile,
respectiv coloanele unei matrici sunt vectori.
S scriem n continuare n fereastra de comand
(Figura 8.7.3):

Figura 8.7.3. Scrierea ca vector a unui ir de date.

plot(p1)
19

Mihai Tr

Rezultatul este generarea unei figuri (Figure No.1)


ntr-o fereastr independent (Figura 8.7.4). Ea
conine graficul temperaturilor pacientului p1
(Figura 8.7.4).
Iat ct de puternic este interfaa grafic n
MATLAB. Cine tie ct munc de programare
nseamn reprezentarea chiar a unui grafic simplu,
va aprecia din acest exemplu simplu, elegana
MATLAB-ului.

Figura 8.7.4. Reprezentarea grafic a vectorului


p1, prin instruciunea plot(p1)

Dac vom rescrie acum datele n vectorul p1


separate prin punct i virgul (;) rezultatul este
20

Informatic medical

generarea unui vector coloan. Prin urmare, scrierea


datelor separate prin spaiu sau virgul genereaz
un vector linie, pe cnd scrierea lor separate prin ;
genereaz un vector coloan (Figura 8.7.5).
S chemm acum ultima linie de comand (Figura
8.7.6) folosind tastele sgei verticale, adugnd ; la
sfritul ei i vom constata c tasta ENTER nu mai
are ca efect dect apariia prompterului. Vectorul
p1 nu mai este afiat.

Figura 8.7.5. Scrierea datelor ca vector coloan.

Prin urmare semnul ; la sfritul unei linii de


comand blocheaz afiarea rezultatului comenzii.

Figura 8.7.6. Linia terminat cu ;


blocheaz afiarea rezultatului.
21

Mihai Tr

Acesta este un mecanism simplu dar puternic prin


care putem afia pe ecran numai ceeea ce ne este
necesar n cursul dezvoltrii sau desfurrii unui
program.
Pentru a transforma un vector linie ntr-un vector
coloan i invers, nu trebuie s rescriem de fiecare
dat vectorul. Este suficient s scriem:
p1
Apostroful dup numele vectorului semnific
operaia de transpunere, adic inversarea liniilor cu
coloanele, deci transformarea vectorului linie n
vector coloan i invers.
ncercai! Scriei
p1t=p1,
apoi
p1t
(aici p1t este noul nume pentru vectorul transpus).
n felul acesta am transpus succesiv vectorul,
obinnd ba vector linie, ba vector coloan. Ne
jucm cu vectorii cum vrem, i ne-am i familiarizat
bine cu felul n care scriem datele n MATLAB.
Procednd asemntor, sa scriem acum datele din
tabel n vectori linie succesivi p2, p3, ..., p10, aa
cum am procedat i pentru p1.
Scriem apoi:
matp=[p1; p2; p3; p4; p5; p6; p7; p8; p9; p10]
22

Informatic medical

Rezultatul este generarea unei matrici dreptunghiulare cu numele matp, cu 10 linii (ci pacieni
sunt) i 8 coloane (n cte zile s-a msurat
temperatura). Iat c am organizat toate datele ntro matrice (tablou bidimensional), de dimensiune
(10, 8) zece linii i opt coloane folosind ca linii
vectorii p1, ..., p10.
Putem verifica acest lucru cu o instruciune
size(matp) ca n figura 8.7.7 rspunsul este ans
(answer) afiat pe loc.

Figura 8.7.7. Instruciunea size ().

Avnd matricea la dispoziie, desigur putem oricnd


selecta din ea ce vector sau dat individual dorim.
Dac vrem s extragem vectorul p3 (temperaturile
celui de al treilea pacient):
p3=matp(3,:)
adic linia 3, i toate elementele de pe acea linie.
23

Mihai Tr

Dac dorim numai elementul 4 din linia


(temperatura lui p3 din ziua a patra) scriem:

matp(3,4)
i astfel am localizat exact ceea ce dorim. Iat cum
putem ncapsula datele ntr-o matrice n MATLAB,
i desigur putem extrage de acolo orice atunci cnd
este nevoie.
Pentru a obine dimensiunea unui vector exist
instruciunea length(vector). Figura 8.7.8 ne arat
cum obinem dimensiunea (lungimea) vectorului p3
n dou feluri, cu length i cu size. Cnd folosim
size desigur obinem i numrul de rnduri, n
cazul acesta 1.

Figura 8.7.8. Length i size, aplicate unui vector.

Dorim s vedem acum evoluia n timp a


temperaturilor celor zece pacieni, pe acelai grafic.
24

Informatic medical

Este cunoscut dificultatea de programare a


reprezentrilor grafice n alte limbaje. Noi am vzut
deja ct de simplu am realizat o reprezentare
grafic a unui vector n MATLAB (Figura 8.7.4). S
scriem acum instruciunea
plot(matp')
Rezultatul se vede n figura 8.7.9. i anume graficul
temperaturii tuturor pacienilor n cele 8 zile.

Figura 8.7.9. Reprezentarea grafic a temperaturii


tuturor pacienilor p1, ..., p10.

Pe axa x sunt numerotate zilele, desigur de la 1, pe


25

Mihai Tr

axa y sunt reprezentate temperaturile. Fiecrui


vector i este alocat automat o anumit culoare.
Dac reprezentm vector cu vector, programul ar fi:
plot(p1);
hold on;
plot(p2);
plot(p3);
.
.
plot(p10);

Figura 8.7.10. Putem controla vectorii individual.


Adugm culoare i markeri.
26

Informatic medical

Toate graficele din figur ar fi albastre.


Pentru a diferenia vectorii mai nvm ceva. Iat
cum adugm culoare dup dorin (Figura 8.7.10).
Cum am generat acest grafic ntr-o alt fereastr?
Simplu, am scris figure(2) i astfel am comandat
generarea unei figuri noi. Apoi urmeaz desenarea
fiecrui grafic (corespunztor unui pacient)
preciznd i culoarea dorit (Figura 8.7.11):

Figura 8.7.11. Graficul complet, cu titlu,


etichete de axe i gril.

figure(2);
hold on;
plot(p1, 'b-');
27

Mihai Tr

plot(p2, 'r+-');
plot(p3, 'mo-');
plot(p4, 'c*-');
hold off;
Ai reinut c pentru a desena toi vectorii n
aceeai figur am folosit instruciunea hold on, care
are tocmai acest rol, de a suprapune grafice n
aceeai figur. Cnd am terminat acest lucru,
scriem hold off i acest mod nceteaz.
tim acum destul de multe despre grafice. Totui,
lipsesc unele amnunte: graficul nu are titlu, axele
nu sunt etichetate, graficul nu are gril. Iat cum
putem face acum graficul frumos, complet i
informativ (Figura 8.7.12) ca n figura 8.7.11.

Figura 8.7.12. Cum putem completa graficul


cu titlu, etichete pe axe, gril.

Tot ce am fcut pn acum, am fcut scriind de


fiecare dat comanda potrivit. Dac vrem s facem
i mine acelai lucru, va trebui s-o lum de la
capt, adic aceeai munc plictisitoare i
consumatoare de timp i energie, scriind i lansnd
comand dup comand.
Dac scriem (folosind un editor simplu, de exemplu
28

Informatic medical

Notepad) instruciunile folosite, ca mai sus i


salvm fiierul pe disc cu numele progs1.m, vom fi
transformat succesiunea de instruciuni ntr-un
program de sine stttor, care va putea fi citit i
lansat oricnd n execuie, cu simplul efort de a-i
scrie numele progs1 urmat de apsarea tastei
ENTER. Graficul va aprea instantaneu n figura 2
(vezi figura 8.7.13).

Figura 8.7.13. Lansarea unui program


numai prin apelarea numelui su.

Un program nu este altceva dect o succesiune de


instruciuni n forma cea mai simpl, desigur
putem gndi c i o singur instruciune este un
program.
29

Mihai Tr

Iat mai jos, listat programul nostru progs1.m cu


efect figura 2 din figura 8.7.13.
% progs1.m
% un program simplu
% vectorii temperaturilor celor 10 pacienti
p1=[39.9 38.7 38.9 38.2 38.5 37.8 38.2 37.7];
p2=[38.3 38.5 37.9 37.6 38 37.7 37.1 36.9];
p3=[37.9 37.8 38.1 37.6 37.5 37.6 37.3 37];
p4=[38.1 37.7 38 37.4 37.3 37.3 37 36.8];
p5=[37.8 37.6 37.9 37.2 37.4 37.1 36.9 36.7];
p6=[39.3 38.5 38.8 38.1 37.8 37.4 37.1 36.9];
p7=[37.4 37.6 37.3 37.2 37.1 36.9 37 36.7];
p8=[38.2 38.3 38.1 37.7 37.8 37.3 37 36.5];
p9=[40 39.6 39.4 39.5 39.1 38.7 38.3 37.9];
p10=[39.1 38.5 38.2 38.4 37.9 37.5 37.2 37];
%concatenam vectorii in matricea temperaturilor matp
matp=[p1; p2; p3; p4; p5; p6; p7; p8; p9; p10];
figure(2);
hold on;
plot(p1, 'b-');
plot(p2, 'r+-');
plot(p3, 'mo-');
plot(p4, 'c*-');
hold off;
title('Temperaturi p1, p2, p3, p4');
xlabel('Ziua');
ylabel('Grade Celsius');
grid on;

S remarcm c, odat cu citirea programului, se


citesc i datele, care n mod comand ar trebui
reintroduse, proces dificil i plictisitor.
n programul de mai sus s observm nite linii
30

Informatic medical

care ncep cu semnul % - acestea sunt linii de


comentariu, care nu au nici o semnificaie pentru
calculator, dar sunt importante pentru noi deoarece
ne lmuresc ce am fcut acolo.
Un programator bun comenteaz fiecare linie de
program pe care o scrie.
Vedem c numele programului este n ntregime la
latitudinea programatorului. El este urmat de
extensia .m specific pentru MATLAB. n acest fel
MATLAB tie c este vorba de un fiier care conine
program i nu altceva.
Dup ce am realizat deja un program cu care tim
s facem grafice frumoase, suntem acum n msur
s explorm mai n detaliu limbajul MATLAB pentru
a-i nelege simplitatea i fora.
i MATLAB lucreaz cu expresii matematice ca i
celelalte limbaje de programare, dar spre deosebire
de majoritatea acestor limbaje, n MATLAB aceste
expresii implic la scar larg lucrul cu matrici.
Matricea, cum am vzut, este important n
MATLAB deoarece permite organizarea i accesarea
convenabil a datelor.
Spre deosebire de alte limbaje, n MATLAB nu este
necesar
declararea
dimensiunii
variabilelor,
deoarece la ntlnirea unui nou nume de variabil
se genereaz automat variabila respectiv i se
aloc spaiul necesar de memorie.
Numele unei variabile este o liter, urmat de un
numr orict de mare de litere, cifre sau simboluri.
Din acest numr orict de mare sunt oprite
primele 31 de caractere. Nume de variabile n
programul nostru sunt: p1, p2, ..., matp.
MATLAB face distincie ntre literele mici i cele mari
(case sensitive), de aceea trebuie s avem grij. n
31

Mihai Tr

privina numerelor, MATLAB folosete notaia zecimal, cu punct zecimal opional i cu semn + sau -.
De exemplu pentru numrul 123.87 se folosete i
notaia tiinific cu litera e pentru a specifica o
putere a lui 10. De exemplu, 123.87 poate fi scris i
1.2387e2. Reprezentarea numerelor imaginare este
realizat cu litera i sau j ca sufix.
Operaiile cu numere i variabile implic i
utilizarea unor semne specifice, numite operatori
(Tabelul 8.7.2).
Tabel 8.7.2. Operatori n MATLAB.
OPERATOR

NUME

SEMNIFICAIE

+
+
*
.*
^
.^

plus
uplus
minus
uminus
mtimes
times
mpower
power

mldivide

mrdivide

.\

ldivide

./

rdivide

Plus
Adunare unar
Scdere
Scdere unar
nmulire matriceal
nmulire element cu element
Ridicare la putere a unei matrice
Ridicare la putere a elementelor
unei matrice
mprire, la stnga, a unei
matrice
mprire, la dreapta, a unei
matrice
mprire, la stnga, pe
componente
mprire, la dreapta, pe
componente

Pentru corectitudinea informaiei dm n tabel toi


operatorii, dei pentru aplicaii curente nu sunt toi
necesari. Este bine s-i nvai pe msur ce vei
avea nevoie de ei.
32

Informatic medical

Cel mai plcut i eficient este s nvm lucrnd i


mai ales, contrar practicii curente, greind. Din
greeli nvm cel mai mult i cel mai bine. Este
bine ca uneori s greii intenionat.
Am vzut pn acum c n MATLAB putem
reprezenta numere i c putem opera cu ele. Putem
reprezenta i informaie alfanumeric.
De exemplu,
a=untext
este o variabil alfanumeric, de fapt un ir (string).
Figura 8.7.14 arat cum putem organiza informaia
alfanumeric n vectori, i desigur i n matrici.

Figura 8.7.14. Reprezentarea vectorial


a informaiei alfanumerice
33

Mihai Tr

Vedem acolo i faptul c spaiul (blanc) este o


entitate n sine i c pentru a-l reprezenta apare i
el ntre apostroafe, ca orice caracter alfanumeric.
ncercnd s concatenm vectorii a i b pentru a
forma o matrice, operaia este imposibil (Error)
deoarece elementele de pe coloane trebuie s aib
acelai numr de caractere.
Dac reformatm b ca n figura 8.7.15, concatenarea este posibil i rezultatul se vede n aceeai
figur n matricea mattext.

Figura 8.7.15. Cnd elementele vectorilor


au acelai numr de caractere
concatenarea este posibil.
34

Informatic medical

Desigur n acest caz operatorii valabili pentru


informaie numeric nu mai sunt valabili pentru
informaie alfanumeric.
Exist desigur i operatori specifici pentru lucrul cu
iruri alfanumerice, dar descrierea lor depete
scopul acestei cri.
Pentru a afia mesaje n cadrul unui program este
util instruciunea disp (textul de afisat) care
afieaz caracterul, sau textul aflat ntre apostroafe.
Din aceeai clas face parte instruciunea input cu
rol de a introduce date de la tastatur.
De exemplu
numenou = input('Numele pacientului','s')
are ca efect introducerea numelui pacientului n
variabila numenou. Observai parametrul 's' care-i
spune c este vorba despre un ir alfanumeric
(string) (Figura 8.7.16).
Suntem acum n msur s facem un pas
important n folosirea MATLAB-ului pentru a realiza
lucruri mai utile.
Dup ce am executat porgramul progs1.m care a
avut ca rezultat desenarea figurii 2, datele sunt
pstrate n memorie, pn la tergerea lor
contient, deci le putem folosi.
Ne propunem s folosim calculatorul pentru a ne
alerta pentru care pacient temperatura a depit
pragul de 39.0 o Celsius i n ce zi.
35

Mihai Tr

Scriem un program progs2.m i-l executm (Figura


8.7.17). Iat, regsim i n MATLAB instruciunile
for i if cu care calculatorul realizeaz aciuni
repetitiv, respectiv testeaz anumite condiii i ia
decizii n consecin.

Figura 8.7.16. Folosirea instruciunii input.

S comentm acest program simplu.


Programul progs2.m:
for i=1:size(matp,1)
for j=1:size(matp, 2)
if matp(i,j)>=39.
disp('alerta! Temperatura
Celsius')
disp('pacient');
disp(i);
disp('Ziua');
disp(j);
36

depaseste

39.0

Informatic medical

end
end
end

Prima bucl for...end (primul for pn la ultimul end)


repet pentru toi pacienii (liniile matricii matp
indexate de variabila i) ceea ce se ntmpl n a doua
bucl for...end (al doilea for pn la penultimul end).

37

Mihai Tr

Figura 8.7.17. Folosirea instruciunilor


for...end i if...end.

Bucla interioar (al doilea for pn la penultimul


end) exploreaz n fiecare vector curent (i fixat)
toate elementele (corespunznd celor opt zile)
indexate cu j.
Iat rolul variabilelor de indexare.
Avantajul enorm al buclrii aciunilor const n
faptul c acest mic program poate explora i o
matrice cu 200 linii i 500 coloane, fr nici o
modificare a sa.
Limitele variabilelor i, j sunt stabilite de ctre
size(matp,1)
care citete automat cte linii are matricea matp
ci pacieni - , respectiv de ctre
size(matp,2)
care citete cte coloane are matricea matp
respectiv n cte zile s-a msurat temperatura -.
Iat fora acestor structuri de programare.
n program regsim instruciunea if...end (if i
antepenultimul end) care testeaz pentru fiecare
element al matricii dac temperatura depete
39.0 o Celsius i dac da, afieaz mesajul de alert
urmat de numrul pacientului i de ziua cnd a fost
depit temperatura:
disp('alerta! Temperatura depaseste 39.0 G Celsius')
disp('pacient');
disp(i);
disp('Ziua');
disp(j);
38

Informatic medical

Am vzut mai sus cum folosim instruciunea


condiional if...end pentru a testa anumite condiii
i a genera aciuni n consecin.
Aceast instruciune are o variant deosebit de
puternic i anume if...elseif...end, prin a crei
folosire putem testa condiii multiple, i prin urmare
putem genera aciuni multiple n consecin.
Ne propunem ca n cazul n care temperatura unui
pacient depete 39.0 o Celsius s afim mesajul
disp('alerta! Temperatura depaseste 39.0 G Celsius')
disp('administrati antibiotic')
iar n cazul n care este mai mic dect 37.5
Celsius s afim mesajul

disp('pacient in ameliorare').
Desigur n ambele cazuri afim numrul
pacientului i ziua n care apare situaia respectiv.
Figura 8.7.18 arat programul efectiv i rezultatul.
Aceast instruciune accept multiple intrri elseif
ntr-un corp if ...end i de aici fora sa.
n exemplele de mai sus am folosit cicluri cu numr
fix de pai, i anume numrul de linii respectiv
numrul de coloane ale matricii matp.
Vom vedea n continuare ce nseamn un ciclu cu
numr necunoscut de pai, adic numrul de pai,
de repetri ale anumitor aciuni depinde de
ndeplinirea unei condiii.
39

Mihai Tr

Figura 8.7.18. Folosirea instruciunii if ...elseif...end.


40

Informatic medical

Aceast condiie poate fi chiar o propoziie logic


complex (Figura 8.7.19).

Figura 8.7.19. Folosirea instruciunii while...end.

Ne propunem ca pentru fiecare pacient s detectm


ziua cnd temperatura sa scade sub 37.2 o Celsius
i s marcm acest moment cnd pacientul ncepe
s fie mai bine. Dac se ntmpl ca n cursul celor
41

Mihai Tr

opt zile temperatura pacientului s nu scad sub


aceast valoare, concluzia este c starea pacientului este nc sub semnul ntrebrii, critic.
Programul i rezultatele pentru primii doi pacieni
sunt prezentate n figura 8.7.19. ncercai programul
i vei vedea rezultatele pentru toi cei zece pacieni.
ntlnim n program bucla
while matp(i,j)>37.2 & j<size(matp,2)
j=j+1;
end
n care, ct vreme temperatura este mai mare
dect 37.2 o Celsius, nu se ntmpl nimic altceva
dect incrementarea cu 1 la fiecare pas a contorului
de zile j. n funcie de valorile din vector, aceast
bucl are pentru fiecare pacient un numr diferit de
pai.
Iat un exemplu de bucl cu numr necunoscut de
pai; el este determinat de momentul cand este
ndeplinit condiia prezent n instruciune, n
cazul nostru matp(i,j)>37.2:
if matp(i,j)>37.2 & j==size(matp,2)
disp('pacient inca in stare critica')
disp(i)
disp(j)
else
disp('pacientul incepe sa fie mai bine')
disp(i)
disp(j)
end
42

Informatic medical

Observm c aceast condiie este intersectat (prin


funcia logic I &) cu condiia j<size(matp,2)
pentru a nu se depi dimensiunea matricii.
Observm din nou folosirea instruciunii if...else cu
o singur alternativ de decizie n acest caz,
necesar aici pentru a izola situaia n care n cazul
unui pacient temperatura nu scade n nici una din
zile (adic pn la sfritul vectorului) sub limita de
37.2 o Celsius. Dac nu detectm aceast situaie,
atunci programul ar genera un mesaj fals. ncercai.
MATLAB-ul furnizeaz un numr mare de funcii
matematice elementare standard (abs - valoare
absolut, sqrt - radical, exp funcia exponenial,
sin - sinus, cos - cosinus, ... ). Exist, de asemenea i
funcii matematice superioare.
Putem vizualiza funciile elementare tastnd:
>> help elfun
iar, pentru a vizualiza lista funciilor avansate se
poate tasta
>> help specfun
>> help elmat
Nu ncheiem aceast scurt prezentare a mediului
MATLAB fr s dm un exemplu care ilustreaz
odat n plus posibilitile grafice deosebite ale
acestui mediu. Figura 8.7.20 reprezint spaial (3D)
evoluia temperaturilor celor 10 pacieni n 8 zile
consecutiv.
43

Mihai Tr

Iat programul care genereaz aceast reprezentare:


figure(3);
surfl(matp);
shading interp;
title('Evolutia temperaturilor');
xlabel('Pacienti');
xlabel('Zile');
ylabel('Pacienti');
zlabel('Temperatura');
Dup cum vedei, cu un efort mic, obinem foarte
mult, datorit eficienei deosebite a cestui mediu de
programare.

Figura 8.7.20 Reprezentarea spaial (3D)


a evoluiei temperaturilor celor 10 pacieni
n 8 zile consecutiv.
44

Informatic medical

n capitolele urmtoare vom reveni la MATLAB ca


instrument de lucru n achiziia i prelucrarea
semnalelor i imaginilor medicale, ceea ne va
completa i mai bine viziunea asupra lui.
Este momentul acum s menionm c MATLAB
este un mediu deschis, care poate fi continuu
mbogit chiar de ctre utilizator prin realizarea de
funcii noi. n felul acesta au fost realizate biblioteci
de funcii specializate pe anumite domenii de
interes, acestea fiind incluse n MATLAB sub
numele de Toolboxes (cutii cu scule).
Prezentm n continuare o list actual pe domenii
de interes, valabil pentru versiunea 7.14:
Matematic i optimizare
Optimization Toolbox
Symbolic Math Toolbox
Extended Symbolic Math Toolbox
Partial Differential Equation Toolbox
Genetic Algorithm and Direct Search Toolbox
Statistic i analiz de date
Statistics Toolbox
Neural Network Toolbox
Curve Fitting Toolbox
Spline Toolbox
Model-Based Calibration Toolbox
Proiectarea i analiza sistemelor de control
Control System Toolbox
System Identification ToolboxFuzzy Logic Toolbox
Robust Control Toolbox
Model Predictive Control Toolbox

45

Mihai Tr

Prelucrare de semnal i comunicaii


Signal Processing Toolbox
Communications Toolbox
Filter Design Toolbox
Filter Design HDL Coder
Wavelet Toolbox
Fixed-Point Toolbox
RF Toolbox
Prelucrare de imagine
Image Processing Toolbox
Image Acquisition Toolbox
Mapping Toolbox
Data Acquisition Toolbox
Instrument Control Toolbox
Image Acquisition Toolbox
Computational Biology
Bioinformatics Toolbox
SimBiology
Modelare i analiz financiar
Financial Toolbox
Financial Derivatives Toolbox
GARCH Toolbox
Financial Time Series Toolbox
Datafeed Toolbox
Fixed-Income Toolbox
Application Deployment
MATLAB Compiler
Excel Link
MATLAB Web Server

46

Informatic medical

Baze de date
Database Toolbox

Sunt de remarcat Computational Biology i


Bioinformatics Toolbox cu aplicaie direct n
domenii de grani: biologie computaional i
bioinformatic. Chiar i numai aceste dou
prezene n acest context cred c justific ndemnul
de a nva acest mediu de programare accesibil
oricui.
Cele prezentate mai sus sunt o introducere util
chiar pentru cei fr nici o experien prealabil n
programare, i nceputul necesar pentru a continua
s se perfecioneze pn la nivelele cele mai nalte,
indiferent de profesia lor. Bucuria acestui efort va fi
o eficien sporit n ceea ce facei. n ncheiere, un
sfat. Nu uitai, nici Roma nu s-a cldit ntr-o
singur zi.

47

Mihai Tr

48