比如说我要写
set(text1,'String',a(1))
或者写
text1=1: %不是text(1),不是数组
要text1到text100,
可以生成“text1”到“text100”这个字符串,
怎样才能把这个字符串变成可以再set命令或者等式里使用的
谢谢
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经常是函数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结果。
表6.2
数 值 格 式 转 换 例 子
命令
结果
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
从上面看不明显,上面的每行有同样数目的元素。较短行用空格补齐,使结果形成一个有效的矩阵
在逆方向转换中,有时是很方便的。
» s= ' [1 2; pi 4] ' % a string of a MATLAB matrix
s =
[1 2; pi 4]
» str2num(s)
ans =
1.0000 2.0000
3.1416 4.0000
» s=' 123e+5 ' % a string containing a simple number
s =
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;
如:str1=‘set(text1,“String”,a(1))’;
eval(str1);
相当于执行了这个语句。本回答被网友采纳
你在引用text1之前,text1是否已经存在?追问
目前想写的是这个
set(handles.checkbox1,'String',a(1));
gui里面的100个checkbox,checkbox1是tag,要一个一个改他们的string
有个比较变通的方法。handles.checkbox1实际上是一个实数。所以,你先用一个数组h(i)把handles.checkbox1~handles.checkbox100都记下来,然后set(h(i),....)即可。
追问这样还是要写100个啊。问题是可以写成
h(i)=[ 'handles.checkbox' numstr2(i)];
这样h(i)只是一个字符串,要把它变成handles.checkbox1控制字,把引号去掉
那100个你只需要写一次即可,后面你就可以随便set了。生成h(i)不一定要一个一个手打,用excel什么的拉一下就出来了,像这样子:
handles.checkbox2
handles.checkbox3
handles.checkbox4
handles.checkbox5
handles.checkbox6
handles.checkbox7
handles.checkbox8
handles.checkbox9
handles.checkbox10
handles.checkbox11
handles.checkbox12
handles.checkbox13
handles.checkbox14
handles.checkbox15
handles.checkbox16
handles.checkbox17
handles.checkbox18
handles.checkbox19
handles.checkbox20
handles.checkbox21
handles.checkbox22
handles.checkbox23
handles.checkbox24
handles.checkbox25
handles.checkbox26];
主要是我也没见过直接把一个字符串转变成变量引用的写法。
追问我去。。。要不要这么狠。。代码一下多了N多行。。
我找到一个函数 eval()
比如
h=['handles.checkbox' '1'];
h=eval(h)
set(h,'String',aa(1));
这样是可以的,但是不能写成数组h(i)=['handles.checkbox' 'i'];h(i)=eval(h(i))
这个可以用cell来实现。
h{i}=['handles.checkbox' '1'];h1(i)=eval(h{i})
set(h1(i),'String',aa(1));
这里的问题在于字符串本身是一个字符数组,所以需要一个能够以数组作为元素的结构,这个结构在Matlab里面叫做cell。
本回答被提问者采纳