matlab中的num2str函数和char函数在用法上有什么本质区别呀?

matlab中的num2str函数和char函数在用法上有什么本质区别呀?它们不都是将数转化成字符吗?只不过num2str是转化成字符,而char转化成字符数组,是这样的区别吗?

区别如下:

1、定义不同。

char是计算机编程语言(c、c++、java、VFP,,pascal,等)中可容纳单个字符的一种基本数据类型。num2str是把数值转换成字符串

2、用法不同。

把数值转换成字符串, 转换后可以使用fprintf或disp函数进行输出。在matlab命令窗口中键入doc num2str或help num2str即可获得该函数的帮助信息。char是ascii码表将数字映射成字符。

Num2str函数是一个相当有用的函数,一般配合[]连接符使用。

可以用于求导数的表达式,函数X^2 – y^p + y^t,pt为数值,可以跟随程序的不同被赋予不同的值。 Diff([‘x^2 – y^’ num2str(p) ‘+y^’ num2str(t), x])。

3、语法格式不同。

str = num2str(A)

把数组A中的数转换成字符串表示形式。

=char(number)

其中,参数number为转换的字符代码,介于0~255之间,char占一个字节,也就是8个二进制位,但它表示的是有符号的类型,所以表示的范围是-128~127;uchar表示无符号的类型,所以表示的范围是0~255。

参考资料来源:百度百科-num2str

参考资料来源:百度百科-char

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-17
虽然都是将数转成字符串,但大有区别的,两个的作用根本就不一样:
num2str是将数转成文字,举例子 num2str(43)得到的将是'43',有两个字符
char是按照ascii码表将数字映射成字符,char(43)得到的将是‘+’,(加号的ascii码就是43)

Num2str函数是一个相当有用的函数,一般配合[]连接符使用
1 用于求导数的表达式,函数X^2 – y^p + y^t,pt为数值,可以跟随程序的不同被赋予不同的值。 Diff([‘x^2 – y^’ num2str(p) ‘+y^’ num2str(t), x])

2 用于求解积分用法同上,把被积函数表示出来就可以了。 int([‘x^2 – y^’ num2str(p) ‘+y^’ num2str(t), x, a,b])

3 用于求解方程或微分方程 Solve([‘x^2 – x^’ num2str(p) ‘+x^’ num2str(t)],x) Dsolve([‘Dx^2 – x^’ num2str(p) ‘+x^’ num2str(t)], x)

4 如果你要运行一些大的算法,涉及到了循环,你不防试试下面的方法,提示程序的进度。这个是我在做Monte Carlo时的一个收获。 Plot(...)任意的绘图, Text(x, y , ['Monte Carlo Number=' num2str(mc) '/' num2str(NMc)])将这个语句写在循环体的内部。

5 在保存图像的时候用到动态的给文件起名的时候,也可以用这个语句。文件名[‘file’ num2str(i) ‘.bmp’]i为循环计数名。

MATLAB char
使用方法
S = char(X)
把表示字符的非负整数数组X转化为字符串数组S,实际的字符显示和给定的字符编码有关。X的范围为从0到65535,任何在此范围外的数据都没有定义。使用double函数把字符串转化为对应整数。
S = char(C)
如C是一个元胞字符数组,C中的每个元素放置在字符数组s中的行中。用cellstr函数可以转化回来。
S = char(t1, t2, t3, ...)
生成字符型数组S把t1,t2,t3,...作为行,为了生成有效的矩阵自动在每个字符型数组加倍添加空格。每个字符参数,ti,本身是字符型数组。这允许任意大的字符数组的创建。空字符串是重要的。
第2个回答  推荐于2017-09-25
虽然都是将数转成字符串,但大有区别的,或者说两个的作用根本就不一样哈,我给你解释一下:

num2str是将数转成文字,举例子 num2str(43)得到的将是'43',有两个字符哦~

char是按照ascii码表将数字映射成字符,char(43)得到的将是‘+’,(加号的ascii码就是43哦)~

明白了没?

如果你输入的是数组,结果是类似的,不过每个都处理而已。追问

>> z=sym('t');x=laplace(z);disp(['a=',char(x)])
a=1/s^2
>> z=sym('t');x=laplace(z);disp(num2str(x))
??? Undefined function or method 'max' for input arguments of type 'sym'.
我想知道上面两种用法中,为什么用num2str就报错呢?
还有下面两个语句
>> z=sym('t');char(z)
ans =
t
>> z=sym('t');num2str(z)??? Undefined function or method 'max' for input arguments of type 'sym'.

追答

如果你想学matlab,请先学好英语,然后才能看错误哦亲~

错误里说max不能对sym型变量使用,这跟你提的两个函数一点关系都没有哦~

追问

为什么用char(z)就能输出结果呢?不是应该输入数吗?字符变量也行?我哪儿用MAX了?这是它自己弹出来的。

追答

针对你这个问题,是这样的:char函数还有一个作用是把符号变成字符串,而num2str函数只能将数字型的变量转成字符串~

拉普拉斯变换出来的是sym型的,所以char对~

追问

你所说的符号与字符串有什么区别?不都是字符吗?
还有像char(23)等,在ASCII中对应的字符比较特殊,结果就显示不出来了,什么都没有,怎么才能显示出来?
>> char(23)
ans =


追答

23 对应的ascii码表示的是“ 信息组传送结束 ”,不能够显示哦~可以百度一下ascii码表看看~

看到你又去知道问了一边问题,我就再补充两句,正经的ascii码前32个是控制字符,就是用来控制操作的,不对应任何字符(有些版本说前32为也对应字符,比如笑脸,但matlab不对应,只能不显示),另外matlab里边也没有扩展的ascii码部分,就是127之后的部分,char出来都是问号。

本回答被提问者采纳
相似回答