>> disp('pi=',pi)
??? Error using ==> disp
Too many input
arguments.
>> disp(sprintf('圆周率pi= %8.5f',pi))
圆周率pi= 3.14159
想把字符串pi=和变量pi的值显示在一行上,试用disp(′pi=′,pi),回答这是非法的.这时应该用sprintf函数,它可把数据按要求的格式转换为字符串,再把它与需要显示的字符串组装成一个长字符串,使显示格式非常灵活,人机界面更为友好.如键入
st=sprintf(′ 圆周率pi= %8.5f′,pi);
disp(st)
结果为
圆周率pi=3.14159
其中,%为数据格式符,f表示十进制浮点,8.5表示数字的长度为8位,小数点后5位.从%到f之间的字符都是不显示的,它只指出显示数据pi的格式,跟C的printf很相似。
在许多情况下,希望把一个数值嵌入到字符串中。几个字符串转换可完成这个任务。
» 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
经常是函数
disp
的一个有用替换,由于它提供了对结果更多的控制。当准备把格式化的数据写到一个文件中去时,按缺省它在
命令
窗口显示结果。例如,
» fprintf(' See what this does ')
See what this does»
» fprintf(' See what this does\n ')
See what this does
在上面第一个例子里,
fprintf
显示字符串,然后立即给出MATLAB提示符。相反,在第二个例子里,
\n
插入一个新行字符,在MATLAB提示符出现之前创建一个新行。
无论
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
结果。
注意,对
e
和
f
格式,小数点右边的十进制数就是小数点右边要显示的多少位数字。相反,在
g
的格式里,小数点右边的十进制数指定了显示数字的总位数。另外,注意最后的五行,其结果指定为8个字符长度,且是右对齐。在最后一行,8被忽略,因为指定超过了8位。
概括起来,当需要比缺省函数
disp
,
num2str
和
int2str
所提供的更多的控制时,
fprintf
和
sprintf
是有用的。
函数
str2mat
把一列的几个字符串转换成一个字符串矩阵。例如,
» a=' one ' ; b= ' two ' ; c= ' three ' ;
» disp(str2mat(a, b, c, ' four '))
three
从上面看不明显,上面的每行有同样数目的元素。较短行用空格补齐,使结果形成一个有效的矩阵
在逆方向转换中,有时是很方便的。
» s= ' [1 2; pi 4] ' % a string of a MATLAB matrix
[1 2; pi 4]
» str2num(s)
ans =
1.0000 2.0000
3.1416 4.0000
» s=' 123e+5 ' % a string containing a simple number
123e+5
» str2num(s)
ans =
12300000
函数
str2num
不能接受用户定义的变量,也不能执行转换过程的算术运算。
pcolor(X,Y,C)函数的用法: X,Y是用来定位的,C是用来填充颜色的。
当X,Y是向量时,X与C的列对应,Y与C的行对应,因此向量X和Y的维数必须要求与C的列与行统一。所以使用时注意检查X,Y,C的大小和维数。
其后面最好用上函数:shading interp;