FAQ -- kysymyksiä ja vastauksia

Maple ja Matlab

ke 10.3. Maplen tietorakenteet (Mikan kysymys)

[HAM]-kirja:

Array,table,Vector,vector,Matrix,matrix

Aloita vaikka ?array.

Usein on mukavaa ajatella alaindeksoitua muuttujaa, kuten x[i]. Jos teemme vaikka

  for i from 0 to 4 do
    x[i]:=a^i;
  end do:
niin x[i]:t voidaan ajatella matematiikan kannalta indeksoiduiksi muuttujiksi. Maplen tietorakenteena olemme luoneet "array"-tyypin x ilman ennkkoallokointia. Täytyy huomata, että symbolia x ei ole nyt syytä käyttää muuhun tarkoitukseen.

Usein on mukavaa rakentaa lista, vaikkapa

[seq(x[i],i=0..10];
(Loppupää tulee pelkkinä x[i]-symboleina.)

Voisimme tehdä myös suoraan: L:=[seq(a^i,i=0..4)];
Huomaa: Listan alkioita indeksoidaan myös hakasuluilla, indeksointi alkaa aina 1:stä. (Array-tyypissä se voi alkaa mistä vain, ellemme ennakkoon allokoi listan indeksirajoja, vaikkapa x:=array(1..5);)

Matriisit ja vektorit

Valitettavasti on sekä Vector että vector, Matrix, matrix,LinearAlgebra, linalg.

Kirjoittelen tähän lisää, kunhan ehdin ...

Toistaiseksi: ?LinearAlgebra, ?linalg (linalg-asioita on [HAM]-kirjassa, LinearAlgebra ei, kun ne eivät olleet vielä silloin (1998) syntyneet.)


ke 10.3.04 Mikan kysymys harvoista: Voidaanko lukea tiedostosta harvana?
A: spconvert

>> help spconvert

 SPCONVERT Import from sparse matrix external format.
    SPCONVERT is used to create sparse matrices from a simple sparse
    format easily produced by non-MATLAB sparse programs.  SPCONVERT
    is the second step in the process:
      1) LOAD an ASCII data file containing [i,j,v] or [i,j,re,im]
         as rows into a MATLAB variable.
      2) Convert that variable into a MATLAB sparse matrix.
...
  Example: Suppose mydata.dat contains the rows
            8  1  6.00
            3  5  7.00
            4  9  2.00
            9  9  0
    then the commands
 
        load mydata.dat
        A = spconvert(mydata);
 
    produces the 9-by-9 sparse matrix
        A =
           (8,1)        6
           (3,5)        7
           (4,9)        2
ti 2.3.04 Matlab-idiomeja. Veeran esityksessä oli matriisi N. Jos on jo tehty A=ones(5,5), niin:
>> A=ones(5,5)
A =
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
>>N= reshape(cumsum(A(:)),size(A))
N =
     1     6    11    16    21
     2     7    12    17    22
     3     8    13    18    23
     4     9    14    19    24
     5    10    15    20    25
Tämä tuli siinä heti mieleen. Yksinkertaisempi (ja varmasti tehokkaampikin) olisi
>> reshape(1:25,5,5)
ans =
     1     6    11    16    21
     2     7    12    17    22
     3     8    13    18    23
     4     9    14    19    24
     5    10    15    20    25


Heikki K Apiola
Last modified: Wed Jan 28 13:15:32 EET 2004
  • LinearAlgebra vs. linalg
    Matriiseja voidaan rakentaa kulmasuluilla uudemmassa, LinearAlgebra-tyylissä.
    Heikki K Apiola
    Last modified: Thu Mar 11 09:01:56 EET 2004