Laborator_1_Informatica

download Laborator_1_Informatica

of 10

Transcript of Laborator_1_Informatica

  • 8/8/2019 Laborator_1_Informatica

    1/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 1 din 10

    LABORATOR 1:

    GENERALITATI. COMENZI UTILE & CUVINTE REZERVATE. SCALARI & CONSTANTE.

    VECTORI, MATRICE & SIRURI DE CARACTERE. EXTRAGEREA, SALVAREA & FORMATUL

    DATELOR. FUNCTII SPECIFICE SIRURILOR DE VALORI

    1.1. GENERALITATI

    MATLAB este un limbaj de programare de nivel inalt si un mediu interactiv care permite efectuarea

    calculelor numerice stiintifice si ingineresti mult mai rapid decat utilizand limbajele de programare clasice ca C,

    C++ si Fortran. MATLAB este bazat pe calculul matriceal, iar denumirea sa este abrevierea cuvintelor MATrix

    LABoratory(Laborator Matriceal). Este comercializat de catre compania MathWorks; a fost conceput in 1978.

    GNU Octave http://www.gnu.org/software/octave/ este o clona de tip free software a MATLAB,

    distribuita de catre Free Software Foundation http://www.gnu.org/ in termenii GNU General Public License

    http://www.gnu.org/copyleft/gpl.html

    GNU Octave a fost conceput in 1988 de catre James B. Rawlings de la University of Wisconsin-Madison

    si John G. Ekerdt de la University of Texas. Din 1992 a fost dezvoltat de catre John W. Eaton, prin contributia

    mai multor informaticieni si matematicieni http://www.gnu.org/software/octave/acknowledgments.html

    Exista un manual in format HTML (575 de pagini) pentru utilizarea GNU Octave, elaborat de catre John W.

    Eaton (Copyright 1996, ..., 2007):http://www.gnu.org/software/octave/doc/interpreter/

    Prima versiune GNU Octave (alpha) a fost lansata la 4 ianuarie 1993. Pana in prezent, GNU Octave a

    suferit revizii importante, fiind competitiv in raport cu produsele similare comerciale (de exemplu, MATLAB).

    In momentul de fata exista distributii GNU Octave pentru principalele sisteme de operare (Unix, Linux,

    Windows si altele), obtinute direct de pe site-ulhttp://www.gnu.org/software/octave/download.html

    Ca structura, GNU Octave este conceput pe doua nivele: un pachet de programe executabile de tip

    kernel, acompaniat de o colectie de fisiere functie de tip text cu extensia .m, grupate intr-un sistem de

    directoare speciaziate pe domenii de interes stiintific si ingineresc. Spre exemplu, poate contine directoarele:

    audio, comm, elfun, finance, general, image, integration, linear-algebra, miscellaneous, ode, optim, path, plot,

    polynomial, set, signal, sparse, specfun, special-matrix, splines, statistics, strings, struct, testfun, time etc.

    Fisierele functii sau fisierele program in GNU Octave sunt fisiere de tip text (ASCII), cu extensia .m (ca

    in MATLAB).

    In GNU Octave, respectiv in MATLAB nu sunt necesare declaratii despre tipul si dimensiunea

    variabilelor; la introducerea datelor, GNU Octave (respectiv MATLAB) recunoaste tipul de variabila si aloca

    automat memorie. Literele mici si majusculele (exemplu, a si A) au implicit, semnificatii diferite. Fereastra de

    comenzi in GNU Octave este de tipul celei din Figura 1.1.

    GNU Octave, respectiv MATLAB lucreaza in domeniul real pe dreapta incheiata [-inf, +inf], unde

    1/0 = +inf, sau in domeniul complex, unde i = sqrt(-1) sau j = sqrt(-1).

    Fig. 1.1 - Fereastra de comenzi GNU Octave, versiunea 3.2.3 (sistem de operare Windows Vista)

    http://www.gnu.org/software/octave/http://www.gnu.org/software/octave/http://www.gnu.org/http://www.gnu.org/http://www.gnu.org/http://www.gnu.org/copyleft/gpl.htmlhttp://www.gnu.org/copyleft/gpl.htmlhttp://www.gnu.org/software/octave/acknowledgments.htmlhttp://www.gnu.org/software/octave/acknowledgments.htmlhttp://www.gnu.org/software/octave/doc/interpreter/http://www.gnu.org/software/octave/doc/interpreter/http://www.gnu.org/software/octave/doc/interpreter/http://www.gnu.org/software/octave/download.htmlhttp://www.gnu.org/software/octave/download.htmlhttp://www.gnu.org/software/octave/download.htmlhttp://www.gnu.org/software/octave/doc/interpreter/http://www.gnu.org/software/octave/acknowledgments.htmlhttp://www.gnu.org/copyleft/gpl.htmlhttp://www.gnu.org/http://www.gnu.org/software/octave/
  • 8/8/2019 Laborator_1_Informatica

    2/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 2 din 10

    1.2. COMENZI UTILE & CUVINTE REZERVATE

    Comanda Descriere

    Intrarea in mediul GNU Octave: dublu clickpe icon Octave (de pe Desktop)

    exit Iesirea din mediul GNU Octave

    octave:1> Prompter-ul din GNU Octave. In functie de versiune si de sistemul de operare, exista

    diferite prompter-e, cum ar fi octave:1> (unde cifra indica numarul liniei de comenzi),

    sau octave-3.2.3.exe:20:C:\Octave\3.2.3_gcc-4.4.0\bin>, sau >> (care semana cu

    prompter-ul din MATLAB)

    Fiecare comanda sau linie de comanda se introduce pentru executie cu tasta

    Daca o comanda este mai lunga de o linie, pentru a o continua pe linia urmatoare, se

    poate scrie la sfarsitul liniei o secventa de 3 puncte sau caracterul back slash\

    %

    #

    In GNU Octave o linie care incepe cu simbolul % sau # este neexecutabila (aceste

    simboluri pot fi folosite pentru comentarii si pe o linie executabila, dar doar dupa

    comanda/comenzile executabile)

    help help

    helpnume

    help helpreturneaza indicatii despre folosirea help;

    help nume returneaza indicatii despre nume, unde nume poate fi o comanda, o functie,

    un caracter special, un cuvant rezervat etc.

    demo('demo') Exemplu demonstrativ in GNU Octave.

    demo('demo') deseneaza graficul functiei y= sin(t) pe intervalul [0, 2]

    history

    history 20 Octave are istoric de comenzi (pentru a aduce in linia de comanda curenta, anumitecomenzi deja folosite in sesiunea de lucru, se foloseste cursorul de pe tastatura).history afiseaza comenzi deja folosite in sesiunea de lucru;

    history 20 afiseaza ultimele 20 de linii de comenzi

    who

    whos

    Listeaza variabilele curente din memorie.

    Listeaza variabilele curente, dimensiunea lor, precum si tipul acestora

    clear nume Sterge din memoria sesiunii de lucru variabile, functii etc.

    disp nume

    type nume

    Afiseaza pe ecran mesajul/rezultatele din nume (nume poate fi o functie GNU Octave

    sau un scriptGNU Octave)

    echo on

    echo off

    Tot ce urmeaza dupa comanda echo on, este afisat pe ecran.

    echo offinhiba echo on

    diary nume_fisier

    diary off

    Salveaza sesiunea de lucru (mai putin partea grafica) in fisierul text nume_fisierpana la

    comanda diary off. Indica locul in care se termina salvarea sesiunii de lucru

    clock Returneaza un vector continand informatiile: anul curent, luna (112), ziua (131), ora

    (023), minutul (059), secunda (urmata de zecimale pentru subdiviziunile secundei)

    date Returneaza data (ziua, luna, anul)

    tic, program, toc Calculeaza timpul scurs in executarea program

    pause(secunde) Suspenda executia unui program timp de numarul de secunde specificat

  • 8/8/2019 Laborator_1_Informatica

    3/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 3 din 10

    sleep(secunde)

    rename(old, new) Redenumeste fisierul old cu numele new

    mkdir

    rmdir

    Creaza un director

    Sterge un director

    cd Schimba directorul

    ls -l Lista fisierelor din directorul GNU OCTAVE octave_files

    pwd Listeaza direcorul curent

    computer Returneaza tipul de computer. Exemplu (sub Windows Vista): i686-pc-mingw32

    Cateva cuvinte

    rezervate:

    break, continue, else, elseif, end, for, endfor, function, endfunction, global, gplot, if,

    endif, plot, return, while, endwhile, ...

    1.3. SCALARI & CONSTANTE

    GNU Octave si MATLAB interpreteaza matricele, vectorii si scalarii in sens matriceal . O variabila

    scalara este interpretata ca fiind o matrice de dimensiune 11. Comanda size returneaza dimensiunea matricei

    (numarul de linii numarul de coloane).

    Exemple de definire pentru scalari: a = 15.73e-12 (inseamna 121073,15a ), b = 3^2 (inseamna2

    3b ),

    r = sqrt(b) (inseamna b ), s = pi*r^2 (inseamna 2r ), z = -7+3*i (inseamna i37z ).

    In GNU Octave si in MATLAB sunt definite multe constante utile de tip built-in. In tabelul de mai jos

    sunt prezentate cateva dintre constantele cele mai importante, urmate de variabile speciale, cu numepredefinite.

    Constanta Descriere

    pi = 3.14159265358979

    isauj Desemneaza coeficientul partii imaginare a unui numar complex: i = sqrt(-1) sau j = sqrt(-1)

    e sau exp(1) e = 2.71828182845905 (baza logaritmului natural)

    Infsau inf = infinit (Exemple: 1/0 = +infsau -1/0 = -inf)

    NaN sau nan = nedeterminare (Not a Number).

    Exemple de neterminari in GNU Octave: 0/0, inf/inf, 0*infreturneaza NaN

    realmin = 2.2251e-308 (adica 308102251,2 ): cel mai mic numar pozitiv utilizabil in calcule (in virgula

    mobila si dubla precizie)

    realmax = 1.7977e+308 (adica 308107977,1 ): cel mai mare numar pozitiv utilizabil in calcule (in

    virgula mobila si dubla precizie)

    eps Exprima precizia masinii; eps = 2.2204e-16 (adica 16102204,2 ) in dubla precizie. Se

    recomanda utilizarea sa atunci cand in timpul executarii unor calcule se doreste evitarea uneiimpartiri cu zero. Exemplu: cand x 0, in loc de 1/x se va scrie 1/(x+eps)

  • 8/8/2019 Laborator_1_Informatica

    4/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 4 din 10

    Variabila

    speciala

    Descriere

    ans Nume de variabila atribuita unui rezultat, daca acesta nu a fost initial atribuit unei alte

    variabile. Exemplu: 2+3, returneaza ans = 5

    nargin Numarul de argumente de intrare ale unei functii

    nargout Numarul de argumente de iesire ale unei functii

    1.4. VECTORI, MATRICE & SIRURI DE CARACTERE

    Introducerea vectorilor:Sintaxa Descriere si exemple

    vector_linie = [b1 b2 b3 ...]

    sau

    vector_linie = [b1, b2, b3, ...]

    Creaza un vector linie care contine valorile sau variabilele b1, b2, b3, ...

    (sau combinatii intre valori si variabile). Valorile/variabilele sunt

    delimitate intre ele prin spatiu, sau , (virgula).

    Exemplu:

    Fie v1 = [1, 1, 5+i] si v2 = [-7 sqrt(9)]v3 = [v2 v1 87] returneaza vectorul linie v3 = -7 3 1 1 5+i 87

    vector_coloana = [b1; b2; b3;...]

    sau

    vector_coloana = [b1 b2 b3 ...]'

    Creaza un vector coloana care contine valorile sau variabilele b1, b2, b3,

    ... (sau combinatii intre valori si variabile). Valorile/variabilele sunt

    delimitate intre ele prin ; (punct-si-virgula), prin apasarea tastei

    sau prin transpunere dintr-un vector linie folosind caracterul ' (apostrof).

    Exemple:

    v4 = [-3; 5; 2*e] si v5 = [1 5 9]' sunt vectori coloana;v6 = [log10(1000); log(e)] returneaza vectorul coloana v6 =

    1

    3

    v'

    sau

    transpose(v)

    Reprezinta transpunerea unui vector. Daca v este vector linie, atunci v'

    este un vector coloana si invers. Daca vectorul linie contine numere

    complexe, prin transpunerea cu v' vor fi afisate conjugatele acestora;

    transpose(v) este echivalent cu v' cu deosebirea ca la transpunere nu

    conjuga elementele complexe

    Exemple:

    Daca v7 = [1 2+i] atunci v8 = v7' returneaza v8 = 1i20i1

    v9 = transpose(v7) returneaza v9 =1i2

    0i1

    vector = val_in:pas:val_fin

    sau

    vector = val_in:val_fin

    Genereaza o multime/serie numerica, intre valoarea initiala specificata

    val_in si valoarea finala val_fin, cu pasul specificat: pas. In cazul in care

    nu se specifica pasul, atunci implicit, pas = 1.

    Exemple:

    v10 = 1:2:10 returneaza v10 = 1 3 5 7 9v11 = 1:10 returneaza v11 = 1 2 3 4 5 6 7 8 9 10

    v = linspace(val_in, val_fin, n)sau

    v = linspace(val_in, val_fin)

    Genereaza o multime/serie numerica liniara de tip vector linie, intrevaloarea initiala specificata val_in si valoarea finala val_fin, cu (n-1)

    subintervale egale, deci vectorul va avea n termeni. Daca nu se specifica

  • 8/8/2019 Laborator_1_Informatica

    5/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 5 din 10

    n, atunci vectorul e generat cu 100 de termeni (99 de subintervale egale).

    Daca val_in > val_fin, termenii vor fi generati in ordine descrescatoare.

    Exemple:

    v12 = linspace(0,10,5) returneaza 5 valori v12 = 0 2.5 5 7.5 10

    v13 = linspace(12,2,5) returneaza v13 = 12 9.5 7 4.5 2

    v = logspace(inferior,superior,n) Genereaza o multime/serie numerica logaritmica de tip vector linie, cu n

    termeni, intre 10^inferior (adica 10inferior

    ) si 10^superior (adica 10superior

    ).

    Daca nu se specifica n, atunci vectorul este generat cu 50 de termeni

    Exemplu:

    v14 = logspace(0,3,4) returneaza v14 = 1 10 100 1000 (unde valoareainitiala este 10

    0= 1 si cea finala este 10

    3= 1000).

    Introducerea matricelor:Sintaxa Descriere si exemple

    matrice = [a11 a12 ... a1m; a21

    a22 ... a2m; ...; an1 an2 ... anm]

    Defineste o matrice cu nliniim coloane care contine elementele aij cui = 1, 2, , n sij = 1, 2, , m. Pe o linie, elementele sunt despartite prin

    spatiu, sau , (virgula), iar liniile sunt delimitate intre ele prin ;

    (punct-si-virgula) sau prin apasarea dupa fiecare linie a tastei

    Exemplu:

    m1 = [1 2 3; 4 5 6; 7 8 9] returneaza matricea m1 =987

    654

    321

    m = [v_col1 v_col2 v_col3 ...]

    sau

    m = [v_lin1; v_lin2; v_lin3; ...]

    Construieste matricea numita m, prin concatenarea unor vectori coloana

    numiti v_col1 v_col2 v_col3 ... (toti de aceeasi dimensiune), sau prin

    concatenarea unor vectori linie numiti v_lin1, v_lin2, v_lin3, ... (toti de

    aceeasi dimensiune).

    Exemple:

    Fie 2 vectori linie de cate 3 elemente w1 = [1 2 3] si w2 = [4 5 6]m2 = [w1; w2] returneaza matricea 23 de forma m2 =

    654

    321

    m3 = [w1' w2'] matricea 32 de forma m3 =63

    52

    41

    matrice = [matrice1 matrice 2

    matrice3 ...]

    sau

    matrice = [matrice1; matrice 2;

    matrice3; ...]

    Construieste o matrice prin concatenarea mai multor matrice numite

    matrice1, matrice 2, matrice3, ...

    Exemple:

    Fie 2 matrice 22 definite ca m4 = [1 2; 3 4] si m5 = [5 6; 7 8]m6 = [m4 m5] returneaza matricea 24 de forma m6 =

    8743

    6521

    m7 = [m4; m5] matricea 42 de forma m7 =87

    65

    43

    21

  • 8/8/2019 Laborator_1_Informatica

    6/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 6 din 10

    [X,Y] = meshgrid(x,y) Comanda meshgrid este folosita in grafica 3D, pentru generarea

    suprafetelor tridimensionale. Comanda meshgrid genereaza 2 matrice

    care definesc o retea dreptunghiulara cu m linii si n coloane in planul

    xOy, unde x este vectorul linie cu n elemente de pe axa Ox si y este

    vectorul linie cu m elemente de pe axa Oy. Daca n = m, reteaua estepatratica. In fiecare punct definit de linia i si coloana j din reteaua de

    dimensiuni mn, coodonatele sunt x(j) si y(i).Exemplu:

    Fie x = [1 2] si y = [3 4 5][X,Y] = meshgrid(x,y) returneaza X =

    21

    21

    21

    si Y =

    55

    44

    33

    Elementul {X3, Y2} din reteaua dreptunghiulara (aflat pe linia 3, coloana 2)

    are coordonatele {2, 5}, adica 2 pe axa Ox, respectiv 5 pe axa OyA'sau

    transpose(A)

    Transpunerea unui matrice. Daca A este o matrice, A' este matriceatranspusa (daca contine numere complexe, prin transpunere vor fi afisate

    conjugatele); transpose(A) este echivalent cu A' cu deosebirea ca la

    transpunere nu conjuga elementele complexe.

    Exemple:

    Fie matricea m8 = [1 2+i; 3 4]m9 = m8' returneaza m9 =

    0i41i2

    0i30i1

    m10 = transpose(m8) returneaza m10 =0i41i2

    0i30i1

    rand(n)

    rand(n,m)

    rand(n) returneaza o matrice cu nn elemente arbitrar distribuite inintervalul (0, 1)

    rand(n,m) returneaza o matrice cu nm elemente arbitrar distribuite inintervalul (0, 1)

    Matrice speciale: Sintaxa Descriere si exemple

    eye(n)

    sau

    eye(n,m)

    eye(n) returneaza matricea identitate de dimensiuni nn (avand 1 pediagonala principala si in rest elemente egale cu 0).

    eye(n,m) returneaza matricea identitate de dimensiuninm.Exemple:

    m11 = eye(3) returneaza matricea m11 =100

    010

    001

    m12 = eye(2,3) returneaza matricea m12 =010

    001

    zeros(n)

    sau

    zeros(n,m)

    Returneaza matricea zero de dimensiuni nn respectiv nm (avand toateelementele egale cu 0).

    Exemple:

    m13 = zeros(2) returneaza matricea m13 =00

    00

  • 8/8/2019 Laborator_1_Informatica

    7/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 7 din 10

    m14 = zeros(2,3) returneaza matricea m14 =000

    000

    Pentru a crea un vector liniecu m elemente nule se scrie: zeros(1,m)

    Pentru a crea un vector coloanacu n elemente nule se scrie: zeros(n,1)

    ones(n)

    sau

    ones(n,m)

    Returneaza matricea unitate de dimensiuni nn respectiv nm (avandtoate elementele egale cu 1).

    Exemple:

    m15 = ones(2) returneaza matricea m15 =11

    11

    m16 = ones(2,3) returneaza matricea m16 =111

    111

    Pentru a crea un vector liniecu m elemente = 1 se scrie: ones(1,m)

    Pentru a crea un vector coloanacu n elemente = 1 se scrie: ones(n,1)

    Introducerea sirurilor de caractereIn GNU Octave, in cadrul unei linii de comanda, sirul de caractere (sau string in engleza) se introduce

    intre apostroafe sau intre ghilimele.

    In MATLAB , in cadrul unei linii de comanda, sirul de caractere se introduce doarintre apostroafe.

    Sintaxa Descriere, exemple

    string = 'textul meu' Defineste sirul de caractere textul meu

    matrice = str2mat(s1, s2, s3) Genereaza o matrice avand pe linii sirurile de caracteres1, s2 si s3.

    Exemplu:

    s1 = 'Ion Ionescu', s2 = 'Popescu R.' si s3 = 'T. Marinescu's = str2mat(s1, s2, s3) returneaza matricea s =

    MarinescuT.

    R.Popescu

    IonescuIon

    Controlul dimensiunii vectorilor/matricelor:Exemple pentru utilizarea functiilor length si size:

    length(v) returneaza lungimea vectorului v (numarul n de elemente din v)length([1:20]) returneaza ans = 20 (sunt 20 de elemente in sirul generat cu pas = 1, de la 1 la 20)size(A) returneaza numarul n linii si numarul m de coloane al matricei A de dimensiuni nmsize([ 1 2 3; 4 5 6]) returneaza ans = 2 3 (adica 2 linii si 3 coloane) Modul de introducere a datelor:

    Daca introducerea unei date (sau unei operatii) se termina cu caracterul special ; (punct-si-virgula),

    atunci data este memorata in sesiunea de lucru, fara a mai fi afisata pe ecran (sau rezultatul operatiei este

    memorat in sesiunea de lucru, fara a mai fi afisat pe ecran).

    Vectorii, matricele sau sirurile de caractere pot fi introduse in sesiunea de lucru si prin importare

    (incarcare) dintr-un fisier text, denumit de exemplu nume.txt, prin folosirea comenzii GNU Octave load, adica

    load {-ascii} nume.txt sau prin folosirea comenzii GNU Octave input (vezi help input).

    Exemplu:

    Fie fisierul text (ASCII) denumit valori_masurate (generat de exemplu intr-un editor de texte banal, caNotepad). Fisierul poate fi creat prin inserarea pe 2 coloane (sau m coloane) a valorilor a doua variabile

    (sau m variabile) diferite. Se trec, de exemplu, pe coloana 1 valorile unui vector care reprezinta lungimi (de

    exemplu, cu 2000 de valori) si se trec pe coloana 2 valorile unui alt vector care reprezinta temperaturi (de

  • 8/8/2019 Laborator_1_Informatica

    8/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 8 din 10

    asemenea, cu 2000 de valori). Pentru a importa matricea de dimensiuni 20002 in programul curent dinGNU Octave, respectiv pentru a citi datele din matrice si a le atribui variabilelor din program se scrie astfel

    (fie L = lungime si T = temperatura):

    octave:1> loadvalori_masurate % importa fisierul valori_masurate

    octave:2> L = valori_masurate(:,1); % citeste si atribuie variabilei L valorile din toata coloana 1

    octave:3> T = valori_masurate(:,2); % citeste si atribuie variabilei T valorile din toata coloana 2

    unde caracterul : (doua puncte) are semnificatia "toate liniile".

    1.5. EXTRAGEREA, SALVAREA & FORMATUL DATELOR

    Extragerea si salvarea datelor:Daca v este un vector cu n elemente, iar vk este elementul vectorului situat in pozitia k, unde k variaza

    intre 1 si n, atunci v(k)permite extragerea elementuluide pe pozitia k.

    Daca A este o matrice de dimensiuni nm, iar aij este elementul situat pe linia i si coloana j, unde ivariaza intre 1 si n, iarj variaza intre 1 si m, atunci A(i,j) permite extragerea elementuluide pe pozitia {i,j}.

    diary data.txt extrage rezultatele din sesiunea de lucru (fara partea de grafica) si le salveaza in fisieruldata.txt (in format ASCII), pana la comanda diary off

    save(-option,nume, v1, v2) salveaza in fisierul nume variabilele v1 si v2 cu optiunea precizata (ascii,

    binary, zip etc.); vezi help save

    Exemplu: save('-ascii', 'nume_fisier', 'v1', 'v2') sau save -ascii nume_fisier v1 v2

    save -ascii nume a b* salveaza in fisierul nume, in format text (ASCII), atat variabila a, cat si toate variabilele

    care incep cu litera b

    saveimage(nume, M, fmt, map) salveaza matricea M in fisierul nume ca imagine in format fmt; acest

    format poate lua valorile: 'img' (Octave's image format), 'ppm' (Portable pixmap format), 'ps' (PostScript

    format). Al patrulea argument, map, stabileste paleta de culori colormap cu care se salveaza imaginea.

    Formatul datelor:format[options] stabileste formatul datelor de iesire din punct de vedere al numarului de zecimale

    afisate, in functie de optiunea precizata (vezi help format si tabelul care urmeaza).

    Comanda format fara optiune restabileste modul implicit de iesire a datelor, anume format short.

    Comanda Informatii despre modul de afisare Exemple

    format short

    format short e

    Afisare implicita cu 5 cifre semnificative.

    Format exponential (puteri ale lui 10) cu mantisa cu

    5 cifre semnificative

    3.1416 (asa este afisat )

    3.1416e+00

    format long

    format long e

    Afisare cu precizie maxima, cu 15 cifre semnificative.

    Format exponential (puteri ale lui 10) cu mantisa cu15 cifre semnificative

    3.14159265358979

    3.14159265358979e+000

    format bank Format bancar, cu 2 cifre dupa virgula 3.14 (asa este afisat )

    format hex Format hexazecimal (afisare in baza 16) ( =) 400921fb54442d18

    dec2bin(n)

    bin2dec('s')

    Converteste un numar n din baza 10, in baza 2.

    Converteste un numar (continut in stringul s) din

    baza 2, in baza 10

    dec2bin(2010) returneazaans = 11111011010

    bin2dec('11111011010')returneaza ans = 2010

    dec2hex(n)

    hex2dec('s')

    Converteste un numar din baza 10, in baza 16.

    Converteste un numar (continut in stringul s) din

    dec2hex(2748) returneazaans= ABC

    hex2dec('12b') returneaza

  • 8/8/2019 Laborator_1_Informatica

    9/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 9 din 10

    baza 16, in baza 10 ans = 299

    dec2base(n,b)

    base2dec('s',b)

    Converteste un numar natural n in baza b.

    Converteste un numar (continut in stringul s) din

    baza b, in baza 10

    dec2base(123,3)returneaza ans = 11120

    base2dec('11120',3)returneaza ans = 123

    1.6. FUNCTII SPECIFICE SIRURILOR DE VALORI

    Sintaxa Descriere

    max(w) Daca w este un sir de valori (un vector) cu n elemente, max(w) returneaza cel mai mare

    termen al sirului (termenul cu valoare maxima)

    min(w) Daca w este un sir de valori (un vector) cu n elemente, min(w) returneaza cel mai mic

    termen al sirului (termenul cu valoare minima)

    mean(w) Daca w este un sir de valori (un vector) cu n elemente, mean(w) returneaza media

    aritmetica a valorilor din sir

    sum(w) Returneaza suma termenilor sirului w

    prod(w) Returneaza produsul termenilor sirului w

    sort(w) Sorteaza termenii sirului w in ordine crescatoare

    -sort(-w) Sorteaza termenii sirului w in ordine descrescatoare

    LABORATOR 1: PROBLEME PROPUSE

    Folosind comanda help, sa se listeze informatiile legate de constantele built-in din GNU Octave: e, eps, i, j,inf, Inf, NaN, nan, realmax, realmin, pi

    Folosind comanda help, sa se listeze informatiile legate de cuvintele rezervate din GNU Octave: break,continue, else, elseif, end, for, endfor, function, endfunction, global, if, endif, plot, return, while, endwhile

    Folosind comanda help, sa afiseze pe ecran toate informatiile despre functiile: load, save si diary Se da sirul de valori: w = [1, -4, log2(40), exp(3), log10(1000), log(42), sqrt(51)]. Se cere: Sa se introduca cu afisare pe ecran sirul, cu numele din sir in format long Sa se gaseasca cel mai mare termen al sirului si cel mai mic termen al sirului Sa se calculeze media aritmetica a termenilor Sa se calculeze suma termenilor si produsul termenilor Sa se sorteze sirul in ordine crescatoare si apoi in ordine descrescatoare.

    HELP: Se vor folosi functiile max, min, mean, sum, prod, sort si -sort.

    Se da matricea A =5222

    11e3

    sqrt(12)012

    1log(6)12

  • 8/8/2019 Laborator_1_Informatica

    10/10

    Copyright 2010, INFORMATICA, Sanda-Carmen Georgescu & Tudor Petrovici

    Catedra de Hidraulica, Masini Hidraulice si Ingineria Mediului, Facultatea de Energetica,

    Universitatea POLITEHNICA din Bucuresti

    Pag. 10 din 10

    Se cere sa se afiseze pe ecran matricea A in format short, short e, long, long e, bank, apoi sa se revina in

    formatul implicit (short).

    Se da sirul de valori u = {2004, 2005, 2006, 2007, 2008, 2009, 2010}, cu numerele scrise in baza 10. Sa seafiseze pe ecran vectorul u, apoi sa se scrie cate un vector care sa contina valorile sirului in ordine

    descrescatoare scrise in baza 2, in baza 16, respectiv in baza 7.