洛伦谈MATLAB的艺术

将想法转化为MATLAB

冷静点!

即使我们经常处理数字,也有很多时候,例如在报告时,我们需要将数字混合到文本中。很长一段时间以来,我们已经能够创建一个字符向量,最近,我们能够创建一个一串,具有以下功能把格式数据写成串在这里有关字符数组和字符串的详细信息。

如果我们想创建一个文本实体,这很好,但是如果我需要它们的数组呢?我可以使用把格式数据写成串在循环中,或者我可以使用更新的函数,组成.让我给你展示一下它们是如何工作的。

目录

单个数字输入

让我们创建一些数值作为可能的输入。

nums=[exp(1)pi]
nums=2.7183 3.1416

下面是来自把格式数据写成串:

cs1=sprintf(“%d”,nums(2))
cs1='3.141593e+00'

这是等价物一串输出:

ss1=sprintf(%d,nums(2))
ss1=“3.141593e+00”

现在让我们试试组成:

cc1=合成(“%d”,nums(2))
cc1=1×1单元阵列{'3.141593e+00'}
sc1=合成(%d,nums(2))%我们的工作区里有什么?
sc1=“3.141593e+00”名称大小字节类属性ans 1x4 8字符cc1 1x1 136单元cc1 1x2 272单元cs1 1x12 24字符csm1 1x26 52字符数1x2 16双sc1 1x1 174字符串scm1 1x2 252字符串ss1 1x1 174字符串ssm1 1x1 206字符串tc 1x1 120单元tmpc 1x2 228单元tmps 1x2 4字符ts 1x2 4字符

你可能会注意到,两者把格式数据写成串组成为字符串版本提供相同的输出。但是,对于字符输出,我们使用把格式数据写成串,但使用组成.

clearvars-除了努姆斯

多个数字输入

现在,让我们看看如果使用多个数字输入格式化输出会发生什么。

csm1=sprintf(“%d”,nums)ssm1=sprintf(%d,nums)ccm1=compose(“%d”,nums)scm1=compose(%d,nums)
csm1='2.718282e+00 3.141593e+00'ssm1=“2.718282e+00 3.141593e+00”ccm1=1×2单元数组{'2.7182E+00'}{'3.141593e+00'}scm1=1×2字符串数组“2.718282e+00”“3.141593e+00”
名称大小字节类属性ccm1 1x2 272单元csm1 1x26 52字符nums 1x2 16双scm1 1x2 252字符串ssm1 1x1 206字符串

我们看到的是,我们得到的输出类型与以前完全相同一串版本组成,我们得到的输出与输入的维度匹配,在这种情况下,1x2,而把格式数据写成串版本中,我们为所有情况获得一个数组。把格式数据写成串始终生成单个数组作为输出,并在有更多数据要格式化时回收孔(格式化程序)。组成返回文本数组。

装卸孔

再一次把格式数据写成串生成一个输出,与输入的尺寸无关。

tmps=sprintf(“%d”,[1 2])tmpc=compose(“%d”,[1 2])
tmps='12'tmpc=1×2单元数组{'1'}{'2'}

而且把格式数据写成串如果不提供数据,则截断孔。组成将其保留在那里,以防您要用后续调用填充它:

ts=sprintf(“\n%s”)tc=合成(“\n%s”)
ts=''tc=1×1单元数组{'↵ %s'}

轮到你了

你需要格式化文本/数字吗?你使用什么技术来获得你想要的结果?让我们知道在这里.




与MATLAB®R2019a一起发布

|
  • 打印
  • 发送电子邮件

评论

如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。