strcat、num2str

时间:2021-08-24 09:57:29

文章出处:

http://blog.sina.com.cn/s/blog_6fb8aa0d01019id5.html

http://wenda.so.com/q/1439143662729624

http://blog.sina.com.cn/s/blog_412888260100g73b.html

1.strcat

连接字符串的函数

一、例:

a = 'hello '
b = 'goodbye'
strcat(a, b)
ans =
hellogoodbye

二、注意:

①在同一行输出

②strcat联接的两个string都是直接连在一起的,中间不能加入空格。不过可以在定义字符时,在字符中加空格

三、tictoc

Matlab连接字符串用strcat好,还是用 [ ] 好?

clear all;
close all
tic;
for i = 1:100
['hello', num2str(i)];
end
t1 = toc;

close all;
clear all;
t = tic;
for i = 1:100
strcat('hello', num2st(i));
end
t2  = toc;

>>

t1 = 0.0229
t2 = 0.0555

**********************************由此可见,[ ] 运行的效率要比strcat高一些。因为strcat 内部需要做一些预处理和其他的数据类型,比如cell。

2.num2str

函数功能: 
把数值转换成字符串, 转换后可以使用fprintf或disp函数进行输出。在matlab命令窗口中键入doc num2str或help num2str即可获得该函数的帮助信息。
  
语法格式:
  str = num2str(A)
  把数组A中的数转换成字符串表示形式。
  str = num2str(A, precision)
  把数组A转换成字符串形式表示,precision表示精度, 比如precision为3表示保留最多3位有效数字, 例如0.5345转换后为0.534,1.2345转换后为1.23。即从左边第一个不为0的数开始保留3个数值。
  str = num2str(A, format)
  按format指定格式进行格式化转换,通常'%11.4g'是默认的。

相关函数: 
mat2str, int2str, str2num, sprintf, fprintf

应用举例:
  >> A = [1, 2, 3];
  >> B = num2str(A);
  >> fprintf('%s', B)
  1 2 3>>
  >> C = [1.564, 0.12345];
  >> D = num2str(C, 3)
  D =
  1.56 0.123
  >> D = int32(1)
  D =
  1
  >> num2str(D, '%.6f')
  ans =
  1.000000

3.num2str应用

在求导数,积分,方程的过程中,难免会遇到一些参数要随着情况有点变化,这时,你就需要能够动态的表示出你的表达式,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为循环计数名。

实例:

obsfile = strcat(obspath,num2str(msta(ista)),'A.txt');