洛伦谈MATLAB的艺术

将想法转化为MATLAB

赞美弦乐

在MatlabR2016B中有一种处理文本数据的新方法一串直到最近,数据类型才得到我足够的关注。我一直在和同事聊天马特·蒂尔亚当·西福纳基斯我们每个人都在MATLAB中发现了一个类似的漂亮代码模式,用于生成字符串序列。

目录

MathWorks历史与文本数据

早期,MATLAB有字符数组。让我们创建一个。

myCharPets=[“狗”;“猫”;“鱼”]
myCharPets=狗猫鱼

请注意,我必须为前两个宠物添加尾随空格,因为我的最后一个宠物,鱼,需要更多的内存(比如来自寻找尼莫?.

我可以找到我的第二只宠物,但是,公平地说,我还必须删除后面的空白。

pet2=deblank(myCharPets(2,:))
pet2=猫

利用Matlab5.0,我们介绍了单间牢房阵列然后是字符串的单元格数组。由于每个单元格都包含自己的MATLAB数组,因此每个数组不需要包含相同数量的元素。因此,我们可以利用一些“新”语法来实现这一点。

菌丝体={“狗”;“猫”;“鱼”}
myCellPets=3×1细胞阵列“狗”“猫”“鱼”

我可以找到列表中的第二个宠物,还有一些,但类似的“新”语法。

pet2=myCellPets{2}
pet2=猫

字符串数据类型

在MATLAB R2016b版本中,我们引入了一串.现在我可以用另一种方法创建文本数据数组。

myStringPets=string(myCellPets)
myStringPets=3×1字符串数组“狗”“猫”“鱼”

我还能找到我的第二只宠物

pet2=myStringPets(2)
pet2=字符串“cat”

我觉得这个符号感觉更自然。我可以把字符串加在一起。

AllofTypes=myStringPets(1)+' & '+myStringPets(2)+' & '+myStringPets(3)
AllofType=字符串“狗、猫和鱼”

好的,是的,我真的应该矢量化它。我可以用字符串来做!

但是等等,还有更多!

你可能还记得,最近史蒂夫·埃丁斯在我的博客上发表了一篇关于隐式展开? 好吧,我们可以利用字符串的优势。

假设我想创建一个目录名数组,其中嵌入了一系列年份。

dirnames=字符串('C:\work\data\yob') + (2000:2010)'
dirnames=11×1字符串数组“C:\work\data\yob\2000”“C:\work\data\yob\2001”“C:\work\data\yob\2002”“C:\work\data\yob\2003”“C:\work\data\yob\2004”“C:\work\data\yob\2005”“C:\work\data\yob\2006”“C:\work\data\yob\2007”“C:\work\data\yob\2008”“C:\work\data\yob\2009”“C:\work\data\yob\2010”

如果我想增加几个月,我也可以这样做。

四分之一个月=字符串({“简”,“四月”,“七月”,“十月”}); dirname=string('C:\root')+季度月数+(2000:2010)'
dirname=11×4字符串数组第1列到第3列“C:\root\Jan2000”“C:\root\Apr2000”“C:\root\Jul2000”“C:\root\Apr2001”“C:\root\Jan2001”“C:\root\Jan2002”“C:\root\Apr2002”“C:\root\Jan2003”“C:\root\Apr2003”“C:\root\Jul2003”“C:\root\Jan2004”“C:\root\Apr2004”“C:\root\Jan2005”“C:\root\Apr2005”“C:\root\Jul2005”“C:\root\Jan2006”“C:\root\Apr2006”“C:\root\Jul2006”“C:\root\Apr2007”“C:\root\Apr2007”“C:\root\Jan2008”“C:\root\Apr2008”“C:\root\Jul2008”“C:\root\Apr2009”“C:\root\Jul2009”“C:\root\Jan2010”“C:\root\Apr2010”“C:\root\Apr2010”“C:\root\Jul2010”第4列“C:\root\Oct2000”“C:\root\Oct2001”“C:\root\Oct2002”“C:\root\Oct2003”“C:\root\Oct2004”“C:\root\Oct2005”“C:\root\Oct2006”“C:\root\Oct2007”“C:\root\Oct2008”“C:\root\Oct2009”“C:\root\Oct2010”

多酷啊!

还有吗?

这只是字符串的开始。你现在可以找到其他可用的。

方法(字符串)
类字符串的方法:cellstr extractAfter le split char extractBefore lower splitlines compose extractBefore lt StartWith包含ge ne条带计数gt焊盘长度双插入器After加上上端插入器Prelace eq ismissing replaceBetween erase IsOrted reverse Erasetween join sort

你可以打赌,随着时间的推移,我们计划为字符串添加更多功能。您希望我们添加哪些功能?让我们知道在这里.




与MATLAB®R2016b一起发布

|
  • 打印
  • 发送电子邮件

评论

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