MATLAB 顯示輸出數據的三種方式
1.改變數據格式
當數據重復再命令行窗口時,整數以整形形式顯示,其他值將以默認格式顯示。MATLAB的默認格式是精確到小數點后4位。如果一個數太大或太小,那么將會以科學記數法的形式顯示。比如:
>> x=100.11
x = 100.1100 >> y=1001.1 y = 1.0011e+03 >> z=0.00010011 z = 1.0011e-04
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
改變默認輸出格式要用到format命令,可根據下表改變數據的輸出格式
format 命令 | 結果 | 例子 |
format short | 保留小數點后4位(默認格式) | 12.3456 |
format long | 保留小數點后14位 | 12.345678901234500 |
format short e | 帶有5位有效數字科學記數法 | 1.2346e+100 |
format short g | 總共有5個數字,可以用科學記數法,也可不用 | 12.346 |
format long e | 帶有15位有效數字科學記數法 | 1.234567890123457e+001 |
format long g | 總共有15個數字,可以用科學記數法,也可不用 | 12.3456789012346 |
format bank | 美元格式 | 12.35 |
format hex | 用16進制標識 | 4028b0fcd32f6f3b |
format rat | 兩個小整數的比 | 2233/100 |
format compact | 隱藏多於的換行符 | |
format loose | 使用多余的換行符 | |
format + | 只顯示這個數的正負 | + |
其中美元格式是指按美元精確到美分的格式記數,隱藏/使用多余的換行符這個我也試出來有什么卵用。
2.disp函數
另一種顯示數據的方法是用disp函數。disp需要一個數組參數,它將值顯示在命令行窗口。如果這個數組是字符型,那么包含在這個數組中的字符串將會打印在命令行窗口。
此函數可聯合num2str(將一個數轉化為字符串)和int2str(講一個整數轉化為字符串)來產生新的信息,顯示在命令行窗口中。例如,下面的語句將“the value of pi=3.1416”顯示在命令行窗口中。第一句創建了一個字符型數組,第二句用於顯示這個數組。
>> str=['the value of pi=' num2str(pi)]; >> disp(str); the value of pi=3.1416
- 1
- 2
- 3
3.用fprintf函數格式化輸出數據
用fprintf函數顯示數據是一種十分簡便方法。fprintf函數顯示帶有相關文本的一個或多個值,允許程序員控制顯示數據的方式。它在命令行窗口打印一個數據的一般格式如下:
fprintf(format,data)
- 1
其中format用於表示一個描述打印數據方式的字符串,data代表要打印的一個或多個標量或數組。format包括兩方面的內容,一方面是打印文本內容;另一方面是打印內容中的數據格式。例如
>> fprintf('the value of pi is%6.2f\n',pi) the value of pi is 3.14
- 1
- 2
打印的結果為the value of pi is 3.14,后面帶有一個換行符。轉義序列%6.2f代表在本函數中的第一個數據項將占有6個字符寬度,小數點后有2位小數。
fprintf函數又一個重大的局限性,只能顯示復數的實部。當我們的計算結果是復數時,這個局限性將會產生錯誤。在這種情況下,最好用disp顯示數據。
format 命令 | 結果 |
%d | 把值作為整數來處理 |
%e | 用科學記數法來顯示數據 |
%f | 用於格式化浮點數,並顯示這個數 |
%g | 用科學記數格式,或浮點數格式,根據長度最短的顯示 |
%n | 換行符 |
例如
>> i ans = 0.0000 + 1.0000i >> disp([i]) 0.0000 + 1.0000i >> fprintf('i is%8.4f\n',i) i is 0.0000
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
注意fprintf忽略了虛部
4.對比總結
- 改變數據的默認格式可以讓數據以你想要的形式展現,包括精確到哪一位、多少進制顯示、只顯示正負等;
- 使用disp函數來打印可以打印所有的內容,包括負數,但要注意的是disp函數需要的是數組參數,並且只會打印數組內的字符串,所以如果是一個數字你需要使用int2str或num2str轉化成字符串,但是如果是一個矩陣,你可以直接打印(至於為什么可以直接打印數字格式的矩陣,我也不明白);
- 使用fprintf函數可以以任何的數據格式打印數據,而且可以帶有一個或多個值,但是要使用正確的特殊字符,但值得注意的是fprintf函數只能復數的實部,所以在有復數參加或產生的計算中,可能產生錯誤的結果;
總的來說,使用fprintf最為靈活方便,可以輸出任何格式,而且可以有多個數據項,但fprintf需要定義數據項的字符寬度和數據格式,所以上手感覺有點繁瑣。