Hur skriver man ut ett visst antal siffror i matlab?

Med hjälp av kommandot format kan vi bestämma hur många siffror som ska skrivas ut i matlab. Kommandot format long ber matlab skriva ut 15 siffror, format short ger oss svar med 5 siffror. Observera att matlab avrundar svaren åt oss.

Med hjälp av format compact skippar vi onödiga tomma rader, vilket kan vara användbart när man har mycket utskrifter som ska in på ett litet utrymme.

För att få scientific notation, dvs grundpotensform, lägger man på bokstaven e efter format anropet, exempelvis format short e.

Ett litet exempel:

>> format long
>> pi

ans =

    3.14159265358979

För att det inte ska bli så luftigt använder vi format compact vilket tar bort onödiga tomma rader.

>> format compact
>> pi
ans =
    3.14159265358979
>> format short
>> pi
ans =
    3.1416
>> format short e
>> pi*100
ans =
    3.1416e+02

Detta på verkar dock bara utskriften, hur gör vi för att avrunda?

Med hjälp av round, floor, ceil och chop kan vi göra underverk.

Kommandot round avrundar till närmsta heltal, floor avrundar alltid neråt till närmsta heltal och ceil avrundar uppåt till närmsta heltal. Inga konstigheter där.

>> round(pi)
ans =
    3
>> round(pi+0.5)
ans =
    4
>> floor(3.7)
ans =
    3
>> ceil(3.1)
ans =
    4

Antag att vi vill avrunda till tre gällande siffror, då använder vi oss av chop.

>> chop(pi, 3)
ans =
    3.1400

Vill vi ha ett specifikt antal decimaler så blir det lite lurigare. Då får vi ta till sprintf och ange en formatsträng. Låt oss säga att vi vill ha sju decimaler.

>> sprintf('%.7f', pi)
ans =
3.1415927

Här anger siffran efter punkten hur många decimaler vi vill ha, f står för float dvs flyttal. För mer information om skriv help sprintf. Matlab har många inbyggda funktioner och mycket bra hjälp, så använd gärna hjälpen!

Andra användbara metoder är num2str och str2num som konverterar mellan tal och strängar, det finns även str2double ifall str2num skulle bråka.

Strängar kan slås ihop på följande sätt:

>> ['abc' num2str(23) 'def']
ans =
abc23def

Mycket nöje!


Tillbaka till numbio04 (email)