Day17_0.1基础学习MATLAB学习小技巧总结(17)——字符向量元胞数组

2024-09-06 15:52

本文主要是介绍Day17_0.1基础学习MATLAB学习小技巧总结(17)——字符向量元胞数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。

素材来源“数学建模清风”

特此说明:本博客的内容只在于总结在使用matlab中的一些小技巧,并非教程,若想系统的学习MATLAB,也可以移步去链接中的视频,观看学习。也欢迎各位在留言区补充,纠错,讨论。

原素材和学习视频地址:MATLAB教程新手入门篇(上部分)(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1dN4y1Q7Kt/?spm_id_from=333.337.search-card.all.click&vd_source=c06380c48bd362b3f90af762beebf543

字符向量元胞数组

字符向量元胞数组是一种特殊的元胞数组,元胞中的每个数据都是字符向量类型,通过下面将要介绍的函数的应用,来初步了解字符向量元胞数组。

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)

C1 = char('is am are 1','one two 3');
isletter(C1)

C1 ='吃了吗 没吃? OK '
isletter(C1)

C1 = {'kanvk jbjvb'}
isletter(C1)

第三行不支持元胞数组类型的数据,所以返回0 。

(2)isspace函数和isletter函数的使用方法类似,它用于判断字符是否为空字符,如空格、制表符、换行符

C1 = ['吃了吗','没吃吧',' ']
isspace(C1)

(3)isstrprop函数,它不仅能够识别字母和空白字符,还能识别数字、标点符号、控制字符等。除此之外,isstrprop函数还能处理多种类型的文本数据的能力,包括字符数组、字符串标量、数值数组

它的用法是:C = isstrprop(str,category)。其中,str代表文本数据,category代表想要检测的字符类别。以下是它支持的字符类别的列表:

 根据输入的str数据类型,isstrprop函数会返回不同类型的结果:

1、如果str是字符数组、字符串标量或数值数组,则C为逻辑数组类型

2、如果str是字符向量元胞数组或者字符串数组,则C为元胞数组类型

此外,还可以在输入参数的最后加上'ForceCellOutput',true,这样可以强制返回值C为一个元胞数组,即使str是一个字符数组、字符串标量或数值数组

例:

C1 = '吃,1,o !'
isstrprop(C1,"alpha")

C1 = '吃,1,o !'
isstrprop(C1,"alphanum")

C1 = '吃,1,o !'
isstrprop(C1,"digit")

C1 = '吃,1,o !'
isstrprop(C1,"graphic")

 

3 strfnd 函数和 strrep 函数:查找与替换文本

在MATLAB中,对文本数据进行查找和替换可以通过strfind和strrep函数来实现

例:

C1 = '我要吃饭,有饭吗';strfind(C1,"饭")

C1 = '我要吃饭,有饭吗'
strfind(C1,'饭','ForceCellOutput',true)

C1 = '我 you her 1';
strfind(C1,'you')

ans = 3
C1 = {'how are you?';'im fine,thanks';'and you'};
strfind(C1,'you')

strrep函数就是将查找到的字符替换成新的字符 

例如;:

C1 = '吃饭吧';
strrep(C1,'吃饭','别吃')

ans = 1×1 cell 数组{'别吃吧'}
C1 = 'eat吧';
strrep(C1,'eat','dont eat')

ans = 'dont eat吧'
C1 = {,'ajvjbjv','javj'};
strrep(C1,'j','J')

ans = 1×2 cell
'aJvJbJv'    'JavJ'       
C1 = ['ajvjbjv','javj'];
strrep(C1,{'a';'b'},{'A';'B'})

ans = 2×1 cell
'AjvjbjvjAvj'
'ajvjBjvjavj'

4 strjoin函数:对数组中的文本进行连接

用法:

str = strjoin(C)

str = strjoin(C,delimiter)

str = strjoin(C) 通过将 C 的元素与连续元素之间的空格链接起来,构造 strC 可以是字符向量元胞数组或字符串数组。

str = strjoin(C,delimiter) 通过将 C 的每个元素与 delimiter 中的元素联接来构造 str

例:

 

C1 = {'ajvjbjv','javj'};
strjoin(C1)%使用空格隔开

ans = 'ajvjbjv javj'
C1 = {'ajvjbjv','javj'};
strjoin(C1,',')%使用,隔开

ans = 'ajvjbjv,javj'
C1 = {'1','2','3'};
strjoin(C1,{'+','='})

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(___) 还返回数组 matchesmatches 输出参数包含 strsplit 拆分 str 时遇到的所有分隔符。您可将此语法与上述语法中的任何输入参数一起使用。

例如:

C1 = ['how','are','you'];
strsplit(C1)

ans = 1×1 cell 数组{'howareyou'}
C1 = 'how are you'
strsplit(C1)

ans = 1×3 cell
'how'        'are'        'you'        
C1 = 'how, ar,e you'
strsplit(C1,',')

ans = 1×3 cell
'how'        ' ar'        'e you'      
C1 = {'how, are, you','im ,fine'};
strsplit(C1,',')

错误使用 strsplit
第一个输入必须为字符向量或字符串标量。

 strsplit函数能够根据指定的分隔符将长文本拆分为更短的文本,这在处理大量文本数据时特别有用

这篇关于Day17_0.1基础学习MATLAB学习小技巧总结(17)——字符向量元胞数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142445

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

hdu 1166 敌兵布阵(树状数组 or 线段树)

题意是求一个线段的和,在线段上可以进行加减的修改。 树状数组的模板题。 代码: #include <stdio.h>#include <string.h>const int maxn = 50000 + 1;int c[maxn];int n;int lowbit(int x){return x & -x;}void add(int x, int num){while