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)