1. 程式人生 > >Matlab怎麼修改顯示數值格式/精度/小數位數

Matlab怎麼修改顯示數值格式/精度/小數位數

原文連結:Matlab怎麼修改顯示數值格式/精度/小數位數
問題描述:
如圖,matlab命令視窗中顯示的數值預設只是4位小數,最後一位採用四捨五入。
在計算中精度要求可能會更高,如果要修改顯示的小數位數,需要操作一下,matlab2013以前的版本的版本請看原文連結(最上方)

format short :控制輸出結果為5位精度,即小數點後4位。matlab提供了format命令,
用於控制輸出結果的顯示精度,而不會影響變數的儲存和運算精度。其中常用的format命令有:

format short:顯示5個字長的數字(小數點後4位)

format long:雙精度數顯示15位精度,單精度數顯示7位精度

format rat:分數形式表示

format short e :將數值都用科學計數法表示,保留五位有效數字
matlab裡面輸入以上命令即可,像這樣:
>>format long
若想改回來就是:
>>format short

matlab程式碼在除錯的過程中,滑鼠懸浮到變數上即可看到變數的值。
類似矩陣和陣列,可以像C++那樣打印出來。
使用disp 函式來 列印變數的值

  fprintf('最終的輸出結果,到此程式結束\n')
  disp(msgstnr)

Matlab輸出變數到文字:
原文連結:matlab 檔案輸出到text檔案總結

  % 新增程式碼輸出 dn 到檔案檢視
  % dn 是一個  10000 * 1 的陣列,或者說矩陣
  % 執行 format long 之後 , dn 的實際可見精度位為 16位
  %disp(dn)
  fid = fopen('H:\noise\weveRead\dn.txt','wt');
  fprintf(fid,'%g\n',dn);   
  fclose(fid);

【matlab】round函式的用法

round函式用於舍入到最接近的整數。語法形式只有1種:Y = round(X),這裡的X可以是數,向量,矩陣,輸出對應。

舉例:

1、round(2.1) = 2; round(2.5) = 3; round(2.8) = 3

2、round(-2.1) = -2; round(-2.5) =  -3; round(-2.8) = -3

3、 >> A = [2.3 4.7 -2.3 -4.7]
  A = 2.3000    4.7000   -2.3000   -4.7000
   >> round(A)
          ans =  2     5    -2    -5

4、>> A = [2.1 4.7 8.9; 3.4 5.6 7.1; -9.8 -3.4 -2.5]
  A =
   2.1000    4.7000    8.9000
   3.4000    5.6000    7.1000
  -9.8000   -3.4000   -2.5000
   >> round(A)
  ans =
                  2     5     9
                  3     6     7
                -10    -3    -3

下面寫一點最近實習心得:
leader給的任務是把 一個小工具 matlab 程式碼移植到 C++ ( 因為 matlab 太慢了,沒辦法配合其他步驟 部署到伺服器中執行)
接到任務第一反應:我經歷了什麼,matlab 根本沒寫過程式碼呀,C++已經是3年前上課時候學習的東西了,請原諒無知的我被矇蔽了雙眼,根本不知道這個任務該如何完成,更不知道這個任務對我成長而言有什麼意義。
經歷了幾天內心的抗拒和針對目前工作狀況等一系列因素的權衡,覺得leader把這個任務交給我自然會有leader的考慮,還是要認真做下去的。
於是開始著手除錯程式,剛開始正向看程式碼,發現看不懂的地方太多了,後來醒悟。
根據最終輸出結果自下而上的尋找與結果相關的變數和方法,以此類推,漸漸的對程式碼的計算方法才有了整體的認識,知道了這些程式碼是這樣的一個過程,相當於從結果出發梳理了matlab程式碼關鍵的變數和方法,裡面有很多對於我的需求無效的程式碼就給排除掉了,因為這些正向看的時候很難看出來和我最終結果有沒有關係。
所以針對這種程式碼量較大,一頭霧水的程式碼,很多時候從最終結果出發,反向路由,更容易理清解決思路,然後再針對相關變數和方法 一 一 理解並複寫C++的方法進行移植。