Tipuri de obiecte in Scilab

  Scalari
     Reali
     Boolean
     Sir de caractere
     Polinom
     Rational
   Matrici de
     reali
     boolean
     siruri de caractere
     polinoame
     rationali
   Matrici rare (sparse
, full)
   Liste (
list)
      Accesarea unui elem. de lista
      Accesarea unui element de element din lista
   Liste cu tipuri
 

Scalari

Reali

-->a=1.3e-22
 a =

1.300D-22

Boolean

-->1==1
ans =

T

Sir de caractere

-->'string' //character string
ans =

string

Polinoame

-->p1=poly([1,2,3],'z') //polinom in variabila z ale carui radacini sunt 1,2 si 3
 p1  =
 
                2   3  
  - 6 + 11z - 6z + z 
-->p2=poly([1,2,3],'z','coeff') //polinom in variabila z ale carui coeficienti sunt 1,2 si 3
 p2  =
 
               2  
    1 + 2z + 3z 
-->p3=poly(1,'x')   //polinom de grad 1 cu radacina 1
p3 =

- 1 + x
Daca in prealabil am declarat:
-->z=poly(0,'z')
 z  =
 
    z
atunci putem declara un polinom si astfel
-->p=1+3*z+4.5*z^2     //polinom declarat fara utilizarea functiei poly
 p  =
 
                 2  
    1 + 3z + 4.5z 

Rational (raport de polinoame)

r=z/p       //rational (valoarea lui p o ia din ultima declaratie a variabilei p)
r =

z 
------------- 
2 
1 + 3z + 4.5z 

Matrici

Matrici de reali

Exemplul de mai jos ilustreaza declararea unei matrici de 3x3 pe 3 linii de cod

-->A=[a+1 2 3
-->   0 0 atan(1)
-->   5 9 -1] //3 x 3 constant matrix
A =

1. 2. 3. 
0. 0. 0.7853982 
5. 9. - 1.

Apelarea unui element de matrice

-->A(2,3)
ans =

0.7853982

Matrici booleene

Declararea unei matrici cu elemente de tip boolean (de tip logic: cu valori de adevar true sau false)

-->b=[%t,%f] //1 x 2 boolean matrix
b =

T F 

Matrici de siruri de caractere

-->Mc=['this','is';
-->    'a' ,'matrix']      //2 x 2 matrix of strings
Mc =

!this is !
! !
!a matrix !

Matrici de polinoame

-->Mp=[p,1-z;
-->    1,z*p]        //2 x 2 polynomial matrix
 Mp  =
 
                 2                    
    1 + 3z + 4.5z     1 - z           
                                      
                            2      3  
    1                 z + 3z + 4.5z

Matrici de rationali

-->F=Mp/poly([1+%i 1-%i 1],'z')   //rational matrix
 F  =
 
                  2                       
     1 + 3z + 4.5z        - 1             
    ---------------     ---------         
               2   3              2       
  - 2 + 4z - 3z + z     2 - 2z + z        
                                          
                               2      3   
           1             z + 3z + 4.5z    
    ---------------     ---------------   
               2   3               2   3  
  - 2 + 4z - 3z + z   - 2 + 4z - 3z + z

Matrici rare (Sparse matrix)

Matricile rare sunt matrici care memoreaza numai elementele diferite de zero (0) ale unei matrici cu multe zerouri.

-->Sp=sparse([1,2;4,5;3,10],[1,2,3])   //sparse matrix
 Sp  =
 
(    4,   10) sparse matrix
 
(    1,    2)        1. 
(    3,    9)        3. 
(    4,    5)        2. 

Functia sparse de mai sus nu face nimic altceva decat ca declara o matrice rara cu trei elemente diferite de zero: elementul(1,2)=1., elementul(3,9)=3. si elementul(4,5)=2..

Functia care face conversia sparse --> matrice normala este functia full.

-->X=full(Sp)
 X  =
 
    0.    1.    0.    0.    0.    0.    0.    0.    0.  
    0.    0.    0.    0.    0.    0.    0.    0.    0.  
    0.    0.    0.    0.    0.    0.    0.    0.    3.  
    0.    0.    0.    0.    2.    0.    0.    0.    0.

Liste

Liste sunt colectii de date heterogene

-->L=list(a,-(1:5), Mp,['this','is';'a','list'])   //list
 L  =
 
 
       L(1)
 
    1.300D-22  
 
       L(2)
 
  - 1.  - 2.  - 3.  - 4.  - 5.  
 
       L(3)
 
                 2                    
    1 + 3z + 4.5z     1 - z           
                                      
                            2      3  
    1                 z + 3z + 4.5z   
 
       L(4)
 
!this  is    !
!            !
!a     list  !

Accesarea unui element de lista

-->L(3)
 ans  =
 
                 2                    
    1 + 3z + 4.5z     1 - z           
                                      
                            2      3  
    1                 z + 3z + 4.5z

Accesarea unui element de element din lista

-->L(2)(3) //accesarea unui element de vector dintr-o lista
 ans  =
 
  - 3.  
 
-->L(3)(2,2) //accesarea unui element de matrice dintr-o lista
 ans  =
 
          2      3  
    z + 3z + 4.5z

Liste cu tipuri (typed-lists)

-->Lt=tlist(['mylist','color','position','weight'],'blue',[0,1],10)  //typed-list
 Lt  =
 
 
       Lt(1)
 
!mylist  color  position  weight  !
 
       Lt(2)
 
 blue   
 
       Lt(3)
 
    0.    1.  
 
       Lt(4)
 
    10.  
>>
-->Lt('color')      //extracting
 ans  =
 
 blue   
>>
-->Lt('weight')     //extracting
 ans  =
 
    10.

Singura deosebire dintre o lista si o lista cu tipuri este ca se pot folosi stringuri pentru identificarea elementelor listei (pe langa indici).




Cornel Mironel Niculae @fizica.unibuc.ro
2008-2009

Last updated: 09 Dec 2009