罗兰关于MATLAB的艺术

将想法转化为MATLAB

歌颂琴弦

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

内容

带有文本数据的MathWorks历史

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

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

请注意,我必须为前2只宠物添加末尾空格,因为我的最后一只宠物是一条鱼,它需要更多的内存(比如来自《海底总动员》)?

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

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

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

菌丝体={“狗”“猫”“鱼”
myCellPets = 3×1 cell array 'dog' 'cat' 'fish'

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

pet2 = myCellPets {2}
pet2 =猫

字符串数据类型

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

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

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

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

我觉得这个符号更自然。我可以把弦相加。

AllofTypes=myStringPets(1)+“&”+ myStringPets (2) +“&”+ myStringPets (3)
Allofmypets = string "狗&猫&鱼"

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

但是等等,还有更多!

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

假设我想创建一个目录名称数组,这些目录名称以年为序列嵌入其中。

目录名=字符串('C:\work\data\yob') + (2000:2010)'
目录名= 11×1的字符串数组“C: \ \小无赖\ \数据2000”“C: \ \小无赖\ \数据2001”“C: \ \小无赖\ \数据2002”“C: \ \小无赖\ \数据2003”“C: \ \小无赖\ \数据2004”“C: \ \小无赖\ \数据2005”“C: \ \小无赖\ \数据2006”“C: \ \小无赖\ \数据2007”“C: \ \小无赖\ \数据2008”“C: \ \小无赖\ \数据2009”“C: \ \小无赖\ \数据2010”

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

四分之一个月=字符串({“简”4月的“七月”“10月”});目录名=字符串('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”

多酷啊!

还有吗?

这只是字符串的开始。你可以找到现在还有什么可用的。

方法(字符串)
string类的方法:cellstr extractAfter le split char extractBefore lower splitlines compose extractBetween lt startsWith contains ge ne strip count gt pad strlength double insertAfter plus upper endsWith insertBefore replace eq ismissing replace between erase issorted reverse eraseBetween join sort

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




发布与MATLAB®R2016b

|

评论

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