Matlab字符串轉換及數值格式轉換


轉自http://hi.baidu.com/pjyang2010/item/758e7df217ddf1dc42c36aec

字符串轉換函數
abs        字符串到ASCII轉換
dec2hex        十進制數到十六進制字符串轉換
fprintf        把格式化的文本寫到文件中或顯示屏上
hex2dec        十六進制字符串轉換成十進制數
hex2num        十六進制字符串轉換成IEEE浮點數
int2str        整數轉換成字符串
lower        字符串轉換成小寫
num2str        數字轉換成字符串
setstr        ASCII轉換成字符串
sprintf        用格式控制,數字轉換成字符串
sscanf        用格式控制,字符串轉換成數字
str2mat        字符串轉換成一個文本矩陣
str2num        字符串轉換成數字
upper        字符串轉換成大寫

在許多情況下,希望把一個數值嵌入到字符串中。幾個字符串轉換可完成這個任務。   
» rad=2.5;  area=pi*rad^2;                 
» t=[' A circle of radius '  num2str(rad)  ' has an area of ' num2str(area)  ' . ' ] ;   
» disp(t)                              
A circle of radius 2.5  has an area of  19.63.              
這里函數num2str用來把數值轉換成字符串,字符串連接用來把所轉換的數嵌人到一個字符串句子中。按類似方式,int2str把整數轉換成字符串。無論是num2str還是int2str都調用函數sprintf,它用類似C語言語法把數值轉換成字符串。


無論fprintf還是sprintf以同樣方式處理輸入參量,但fprintf把輸出送到顯示屏或文件中,而sprintf把輸出返回到一個字符串中。例如,上面的例子用num2str可重寫為       
» t=sprintf(' A circle of radius %.4g has an area of %.4g. ', rad, area);   
» disp(t)                                 
A circle of radius 2.5 has an area of 19.63.             
» fprintf(' A circle of radius %.4g has an area of %.4g.\n ' , rad, area)
A circle of radius 2.5 has an area of 19.63.                 
這里%.4g是用在函數num2str中的數據格式。%.4g就是用指數或定點標記,不管哪一種更短些,只顯示至4位數字。除了g格式,還可用e (指數)和f (定點)轉換。表6.2表明在各種不同轉換下,如何顯示pi結果。 

數值格式轉換例子
命令                結果
fprintf(' %.0e\n ',pi)        3e+00
fprintf(' %.1e\n ',pi)        3.1e+00
fprintf(' %.3e\n ',pi)        3.142e+00
fprintf(' %.5e\n ',pi)        3.14159e+00
fprintf(' %.10e\n ',pi)        3.1415926536e+00
fprintf(' %.0f\n ',pi)        3
fprintf(' %.1f\n ',pi)        3.1
fprintf(' %.3f\n ',pi)        3.142
fprintf(' %.5f\n ',pi)        3.14159
fprintf(' %.10f\n ',pi)        3.1415926536
fprintf(' %.0g\n ',pi)        3
fprintf(' %.1g\n ',pi)        3
fprintf(' %.3g\n ',pi)        3.14
fprintf(' %.5g\n ',pi)        3.1416
fprintf(' %.10g\n ',pi)        3.141592654
fprintf(' %.8.0g\n ',pi)    3
fprintf(' %.8.1g\n ',pi)    3
fprintf(' %.8.3g\n ',pi)    3.14
fprintf(' %.8.5g\n ',pi)    3.1416
fprintf(' %.8.10g\n ',pi)    3.141592654

注意,對e 和f 格式,小數點右邊的十進制數就是小數點右邊要顯示的多少位數字。相反,在g 的格式里,小數點右邊的十進制數指定了顯示數字的總位數。另外,注意最后的五行,其結果指定為8個字符長度,且是右對齊。在最后一行,8被忽略,因為指定超過了8位。 
概括起來,當需要比缺省函數disp,num2str和int2str所提供的更多的控制時,fprintf和sprintf是有用的。      
函數str2mat把一列的幾個字符串轉換成一個字符串矩陣。例如,
» a=' one ' ; b= ' two ' ; c= ' three ' ;
» disp(str2mat(a, b, c, ' four '))
one
two
three
four


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM