DATALOGI A: Data fra C til Maple


Vi beskriver her to essentielt forskellige måder at flytte data fra et C program og ind i Maple.

METODE A:

Benyt Cs faciliteter for formateret udskrivning (altså i praksis funktionen fprintf) til at generere en tekstfil der indeholder en lovlig Maple kommando der definerer en liste eller en liste af liste med de data der skal flyttes. Et eksempel kunne være:

LOGLAMBDA := [
[0.00, -2.66211e+05],
[0.10, -2.48861e+05],
[0.20, -2.43422e+05],
[0.30, -2.41972e+05],
[0.40, -2.43123e+05],
[0.50, -2.46523e+05],
[0.60, -2.52310e+05],
[0.70, -2.61120e+05],
[0.80, -2.74568e+05],
[0.90, -2.97502e+05],
[1.00, -3.92836e+05]];
Er denne fil gemt som loglam1.txt i dit hjemmekatalog kan du i Maple skrive
read(`M:/loglam1.txt`);
hvorefter data ligger i en liste af lister med navnet LOGLAMBDA. METODE A:

Benyt Cs faciliteter for formateret udskrivning (altså i praksis funktionen fprintf) til at generere en tekstfil der indeholder dataene organiseret i et antal linjer, der hver indeholder logisk sammenhørende data opremset med mellemrum imellem. Et eksempel kunne være:

0.00 -2.66211e+05
0.10 -2.48861e+05
0.20 -2.43422e+05
0.30 -2.41972e+05
0.40 -2.43123e+05
0.50 -2.46523e+05
0.60 -2.52310e+05
0.70 -2.61120e+05
0.80 -2.74568e+05
0.90 -2.97502e+05
1.00 -3.92836e+05
Er denne fil gemt som loglam2.dat i dit hjemmekatalog kan du i Maple skrive
LOGLAM:=readdata(`M:/loglam2.dat`, [float,float]);
Effekten er at der oprettes en liste af lister indeholdende data, og at denne navngives til LOGLAMBDA Det andet argument til readdata, altså [float,float], anfører at der er to data på hver linje, og at de begge er af typen float. Har du i stedet heltal, kan du erstatte float med integer.
Uanset hvilken metode du har brugt ligger data nu som en liste af lister med navnet LOGLAMBDA. Denne liste kan nu fx benyttes til at lave en graf med kommandoen
plot(LOGLAMBDA);

Datalogi A/e97/eilers@math.ku.dk