第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式 學習使用fprintf() 函數來控制輸出
Matlab的資料型態
一般數值型態 「一般數值」可分為single與double兩種型態 >> a=12.4 a = 12.4000 >> whos a Name Size Bytes Class a 1x1 8 double >> b=single(3.8) b = 3.8000 >> whos b Name Size Bytes Class b 1x1 4 single
n-bit整數型態 n-bit整數可分為有號(signed)與無號(unsigned)兩種
n-bit整數的範例 >> int8(120)+int16(250) Error using + Integers can only be combined with integers of the same class, or scalar doubles. >> uint8(12)+uint8(64) ans = 76 >> uint8(12)^3 255 >> 2^60 1.1529e+18 >> int64(2)^60 1152921504606846976 >> m=[13 120 30; 36 42 112] m = 13 120 30 36 42 112 >> m1=uint8(m) m1 = 13 120 30 36 42 112 >> uint8([12 300 -250]) ans = 12 255 0
查詢數值資料型態的範圍 >> realmax('double') ans = 1.7977e+308 >> realmin('single') 1.1755e-38 >> intmax('int64') ans = 9223372036854775807
字元資料型態 在Matlab裡,字元是以成對的單引號括起來 每一個字元佔了兩個bytes。 >> char(65:90) ans = ABCDEFGHIJKLMNOPQRSTUVWXYZ >> str='a string' str = a string >> asc=double(str) 97 32 115 116 114 105 110 103 >> char(asc) >> ch='A' ch = A >> double(ch) ans = 65 >> char(65) >> ch+1 66
邏輯資料型態 Matlab以1代表運算結果為true,以0代表運算結果為false 邏輯資料型態的變數佔了一個位元組 >> t4=logical(t3) t4 = >> logical(-7) ans = 1 >> logical([12 1 0 -9.4]) 1 1 0 1 >> t1=isprime(13) t1 = 1 >> t2=(3>6) t2 = >> t3=0 t3 =
控制Matlab的顯示方式 >> a=3,b=4,c=5; a = 3 b = 4 >> x=3;y=4;z=5 >> p=primes(1000); >> length(p) ans = 168 >> max(p) 997
指令跨行的控制 敘述較長無法撰寫在同一行時,可利用跨行符號「...」 >> sin(1.4)-cos(3.14)*12+... tan(0.2) ans = 13.1881 >> sin(1.4)-cos(3.14)*12 ... +tan(0.2) >> A=[200 300 500; 400 600 700;... 100 400 300] A = 200 300 500 400 600 700 100 400 300
資料輸出格式的控制 Matlab在顯示數值時: 位數少於或等於9個,便會全數輸出它 位數大於9個,則會以指數的型式來表示它 如果是帶有小數的數值: 若數值大於等於1000,或者是小於等於0.001,會以指數來表示 Matlab預設以4個位數的小數來顯示帶有小數的數值
控制Matlab的輸出格式
格式化輸出 fprintf()
fprintf() 的範例 >> a=22; b=3.14159; c='@'; >> fprintf('a=%6.3f\n',a); a=22.000 >> fprintf('b=%5.2f\n',b); b= 3.14 >> fprintf('a=%5d, b=%7.4f\n',a,b); a= 22, b= 3.1416 >> fprintf('c=%c\n',c); c=@ >> fprintf('\n');
%g 格式碼 %g 用於想列印的數可能是整數或帶有小數的浮點數時 %g 格式碼不會在小數點之後補上0,可讓數字看起來簡潔 >> fprintf('%f\n',2.94) 2.940000 >> fprintf('%f\n',256) 256.000000 >> fprintf('%g\n',2.94) 2.94 >> fprintf('%g\n',256) 256 >> fprintf('%6.3g\n',3.14159) 3.14 >> fprintf('%6.4g\n',3.14159) 3.142
disp() 函數 disp() 函數可用在要顯示的內容較為簡單時 disp是display的縮寫,也就是顯示的意思 >> disp(a) 22 >> disp([a b]) 22.0000 3.1416 >> disp('A sunny day') A sunny day