利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。
素材来源“数学建模清风”
特此说明:本博客的内容只在于总结在使用matlab中的一些小技巧,并非教程,若想系统的学习MATLAB,也可以移步去链接中的视频,观看学习。也欢迎各位在留言区补充,纠错,讨论。
字符向量元胞数组
字符向量元胞数组是一种特殊的元胞数组,元胞中的每个数据都是字符向量类型,通过下面将要介绍的函数的应用,来初步了解字符向量元胞数组。
1 cellstr函数:将其他类型的文本转换为字符向量元胞数组
它的用法通常是C=cellstr(A),A一般是字符数组。例如:
A = ['a nav',newline,char(9)];
cellstr(A)
B = char('a','154','good')
cellstr(B)
从上面的例子可以看出,如果输入的数据类型是字符数组(包括字符向量和字符矩阵),cellstr 函数在转换过程中会自动删除每行尾部的空白字符。这相当于对转换后的每个元胞中的数据应用了 deblank函数。然而,如果转换的对象是字符串数组,则不会删除尾部的空白字符。
例题1:将字符向量‘1’、‘2’一直到‘100’
解法一:利用for循环
n = 100;
%初始化元胞数组C中数据全为空
C = cell(1,n);
for ii = 1:n
%在循环体内为元胞数组的数据赋值
C{ii} = num2str(ii);
end
C
2 isletter、isspace 和 isstrprop 函数:识别特定种类的字符
isletter、isspace 和 isstrprop 函数是用于识别文本中特定种类的字符。这三个函数在文本处理中非常有用。尤其在字符数据的预处理和分析阶段,其中isstrprop函数是前两个函数的进阶。
(1)isletter函数用于判断字符是否为字母,使用方法:C = isletter(A),输入参数A往往是字符数组或字符串标量(如果A是其他数据类型,那么isletter函数会返回全为0的逻辑数组或者直接报错)。返回值C是一个逻辑数组,当A中的某个字符是字母时,C中对应位置的元素是逻辑值1,否则是逻辑值0。(注意:isletter 函数不仅会识别英文字母,还会识别其他语言中的文字,例如中文的汉字也会被识别为逻辑值1)
| ![]() |
| ![]() |
| ![]() |
第三行不支持元胞数组类型的数据,所以返回0 。
(2)isspace函数和isletter函数的使用方法类似,它用于判断字符是否为空字符,如空格、制表符、换行符
| ![]() |
(3)isstrprop函数,它不仅能够识别字母和空白字符,还能识别数字、标点符号、控制字符等。除此之外,isstrprop函数还能处理多种类型的文本数据的能力,包括字符数组、字符串标量、数值数组
它的用法是:C = isstrprop(str,category)。其中,str代表文本数据,category代表想要检测的字符类别。以下是它支持的字符类别的列表:
根据输入的str数据类型,isstrprop函数会返回不同类型的结果:
1、如果str是字符数组、字符串标量或数值数组,则C为逻辑数组类型
2、如果str是字符向量元胞数组或者字符串数组,则C为元胞数组类型
此外,还可以在输入参数的最后加上'ForceCellOutput',true,这样可以强制返回值C为一个元胞数组,即使str是一个字符数组、字符串标量或数值数组
例:
| ![]() |
| ![]() |
| ![]() |
| ![]() |
3 strfnd 函数和 strrep 函数:查找与替换文本
在MATLAB中,对文本数据进行查找和替换可以通过strfind和strrep函数来实现
例:
| ![]() |
| ![]() |
| ans = 3 |
| ![]() |
strrep函数就是将查找到的字符替换成新的字符
例如;:
| ans = 1×1 cell 数组 {'别吃吧'} |
| ans = 'dont eat吧' |
| ans = 1×2 cell 'aJvJbJv' 'JavJ' |
| ans = 2×1 cell 'AjvjbjvjAvj' 'ajvjBjvjavj' |
4 strjoin函数:对数组中的文本进行连接
用法:
str = strjoin(C)
通过将 C
的元素与连续元素之间的空格链接起来,构造 str
。C
可以是字符向量元胞数组或字符串数组。
str = strjoin(C,delimiter)
通过将 C
的每个元素与 delimiter
中的元素联接来构造 str
。
例:
| ans = 'ajvjbjv javj' |
| ans = 'ajvjbjv,javj' |
| ans = '1+2=3' |
strjoin函数的分隔符中可以是转义符,常见的转义符如下表所示:
5 strsplit函数:在指定分隔符处拆分文本
C = strsplit(str)
在空白处将 str
拆分为 C
。空白字符等效于集合 {' ','\f','\n','\r','\t','\v'}
中的任何转义序列。
如果 str
具有连续的空白字符,则 strsplit
将它们视为一个空格。
C = strsplit(str,delimiter)
在 delimiter
指定的分隔符处拆分 str
。
如果 str
具有连续的分隔符,并且它们之间没有其他字符,则 strsplit
将它们视为一个分隔符。例如,strsplit('Hello,world',',')
和 strsplit('Hello,,,world',',')
返回相同的输出。
C = strsplit(str,delimiter,Name,Value)
使用一个或多个名称-值对组参数指定其他分隔符选项。例如,要将连续分隔符视为单独的分隔符,可以指定 'CollapseDelimiters',false
。
[C,matches] = strsplit(___)
还返回数组 matches
。matches
输出参数包含 strsplit
拆分 str
时遇到的所有分隔符。您可将此语法与上述语法中的任何输入参数一起使用。
例如:
| ans = 1×1 cell 数组 {'howareyou'} |
| ans = 1×3 cell 'how' 'are' 'you' |
| ans = 1×3 cell 'how' ' ar' 'e you' |
| 错误使用 strsplit |
strsplit函数能够根据指定的分隔符将长文本拆分为更短的文本,这在处理大量文本数据时特别有用