问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Matlab 中的字符(char)和字符串(string)

创作时间:
作者:
@小白创作中心

Matlab 中的字符(char)和字符串(string)

引用
CSDN
1.
https://m.blog.csdn.net/RainaRaina/article/details/126962189

Matlab中的字符(char)和字符串(string)是两种不同的数据类型,它们在创建、操作和使用场景上存在一些差异。本文将详细介绍这两种数据类型的定义、主要区别以及实际应用中的注意事项。

一、数据类型定义:向量(char)vs 变量(string)

Matlab中可以通过一对单引号或一对双引号来创建字符(char)或字符串(string)。字符变量(char)可以被当做一个由字符组成的一维向量,字符串(string)则是一个变量。利用 char()string() 函数可以对字符串和字符变量相互转换。

二、不同之处

在很多情况下两者可以互换,下面主要关注两者应用的不同之处。

1. 字符和字符串的串联:[ ] 或 strcat()

可以直接用左右方括号([])对字符(char)进行串联,对字符串(string)的串联则需要用到函数 strcat()。因为字符串是一个变量,用方括号串联只能得到m x n 字符串数组或向量。

2. 多行数组:用分号(;)或换行完成

需要注意:在直接生成字符(串)数组时,char 数组每一行的个数必须相同,string 数组则不需要。(为什么说 “直接生成”,因为在使用函数 str2mat 创建字符(串)数组的时候,不用担心每一行的字符个数是否相等,函数在运行中会以字符最多的一行为准,而将其他行中的字符以空格补齐。可见本节第 4 点示例中的对比。)

3. 字符串中输入单引号

两个单引号相当于一个单引号,但只能用' ''right'' '(char),不能用 " ''wrong'' "(string)

4. 重复出现的元素

4.1 repmat() 实现字符串重复

实际工作中经常遇到一系列字符串有重复出现的固定片段,这时就可以用 repmat() 函数来简化表达。下面给出几个例子:

4.2 同已有数组“拼接”时可以不使用 repmat()

string:前两个例子(string 数组情况下)不用 repmat() 函数所得结果相同。即也可以写成:

strcat("N",string([1:11]'))
strcat('N',string([1:11]'))
strcat("N",num2str([1:11]'))  

char:补充一些 code 例子,不用 repmat() 也可以实现 char 数组的重复,并可以指定数字格式 @20230617

4.3 如果希望每行元素可以不同,就要避免使用 num2str 类的函数

  1. 直接组合字符串
  2. 用 for 循环(对不支持字符串的部分版本)

5. char 数组如何转为 cell 数组

能构建 string 变量的时候直接转换为 cell 就可。但有些 matlab 版本不支持 string(比如 2016),就需要将 char 转换为 cell。

5.1 num2cell(A,dim) 指定 dim

对于上述 char 数组,直接转为 cell 结果如下,显然第一种不是我们所希望的。C = num2cell(A) 将数组转换为相同大小的元胞数组。

**C = num2cell(A,dim) 通过指定 dim,可以对 A 按照特定维度划分。**dim 可以是维度的标量或者向量,更具体应用可见 matlab 官方帮助文档。

5.2 直接用函数 cellstr()

**C = cellstr(A) 将 A 转换为字符向量元胞数组。**输入数组 A 可以是字符数组或分类数组,从 R2016b 开始,也可以是字符串数组。

三、更多实际应用

3.1 获取字符串中的数字

找到两种方法。第一种可以只能详细的 'match' 条件进行精细选择,比如:如何从这样的字符串中提取数字 – MATLAB中文论坛 (ilovematlab.cn)

四、相关函数

字符串相关函数简表

创建
比较
查找替换
strcat 字符串组合
strcmp 判断两个字符串是否相等。
findstr 返回某一子串在整个字符串中的开始位置
strvcat 竖直方向字符串组合
strncmp 判断两个字符串的前n个字符是否相等。
strrep 一般的字符串查找与替换
repmat 重复
strcmpistrncmpi 分别与strcmpstrncmp相同,只是在比较的过程中忽略了字母大小写。
strmatch 查找符合要求的行
strtok 查找某个字符最先出现的位置
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号