matlab字符串

Matlab字符串转换及数值格式转换2010-04-0710:33字符串转换函数

abs字符串到ASCII转换

dec2hex十进制数到十六进制字符串转换

fprintf把格式化的文本写到文件中或显示屏上

hex2dec十六进制字符串转换成十进制数

hex2num十六进制字符串转换成IEEE浮点数

int2str整数转换成字符串

lower字符串转换成小写

num2str数字转换成字符串

setstrASCII转换成字符串

sprintf用格式控制,数字转换成字符串

sscanf用格式控制,字符串转换成数字

str2mat字符串转换成一个文本矩阵

str2num字符串转换成数字

upper字符串转换成大写

在许多情况下,希望把一个数值嵌入到字符串中。几个字符串转换可完成这个任务。

?rad=2.5;area=pi*rad^2;

?t=['Acircleofradius'num2str(rad)'hasanareaof'num2str(area)'.'];

?disp(t)

Acircleofradius2.5hasanareaof19.63.

这里函数num2str用来把数值转换成字符串,字符串连接用来把所转换的数嵌人到一个字符串句子中。按类似方式,int2str把整数转换成字符串。无论是num2str还是int2str都调用函数sprintf,它用类似C语言语法把数值转换成字符串。

无论fprintf还是sprintf以同样方式处理输入参量,但fprintf把输出送到显示屏或文件中,而sprintf把输出返回到一个字符串中。例如,上面的例子用num2str可重写为

?t=sprintf('Acircleofradius%.4ghasanareaof%.4g.',rad,area);

?disp(t)

Acircleofradius2.5hasanareaof19.63.

?fprintf('Acircleofradius%.4ghasanareaof%.4g.\n',rad,area)

Acircleofradius2.5hasanareaof19.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

相关推荐