matlab中的num2str函数和char函数在用法上有啥本质区别呀?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
参考技术A 虽然都是将数转成字符串,但大有区别的,两个的作用根本就不一样: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,本身是字符型数组。这允许任意大的字符数组的创建。空字符串是重要的。 参考技术B 虽然都是将数转成字符串,但大有区别的,或者说两个的作用根本就不一样哈,我给你解释一下:
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出来都是问号。
以上是关于matlab中的num2str函数和char函数在用法上有啥本质区别呀?的主要内容,如果未能解决你的问题,请参考以下文章