第2章 MATLAB基础知识——2.4 字符串处理函数

简介: 第2章 MATLAB基础知识——2.4 字符串处理函数

2.4  字符串处理函数


MATLAB中提供了大量的字符串处理函数,如表2-25所示。

2-25  MATLAB中的字符串处理函数

字符串处理函数

函数功能

eval(string)

作为一个MATLAB命令求字符串的值

blanks(n)

返回一个n个零或空格的字符串

deblank

去掉字符串中末尾的空格

feval

求由字符串给定的函数值

findstr

从一个字符串内找出字符串

isletter

字母存在时返回真值

isspace

空格字符存在时返回真值

isstr

输入一个字符串,返回真值

iasterr

返回上一个产生MATLAB错误的字符串

strcmp

字符串相同,返回真值

strrep

用一个字符串替换另一个字符串

strtok

在一个字符串里找出第一个标记


2.4.1  字符串的构造


字符串或字符串数组的构造可以通过直接给变量赋值来实现,具体表达式中字符串的内容需要写在单引号内。如果字符串的内容包含单引号,那么以两个重复的单引号来表示。

在构造多行字符串时,若字符串内容写在[]内,那么多行字符串的长度必须相同;若字符串内容写在{}内,则多行字符串的长度可以不同。


2-55:直接赋值构造字符串示例。

在命令行窗口中输入:

Str_a = 'How are you?',Str_b = 'I don''t know.',Str_c = strcat(Str_a,Str_b)

输出结果:

Str_a =
    'How are you?'
Str_b =
    'I don't know.'
Str_c =
    'How are you?I don't know.'


在命令行窗口中输入:

Str_mat = ['July';'August';'September';]

输出结果:

错误使用 vertcat
要串联的数组的维度不一致。


在命令行窗口中输入:

Str_mat1 = ['U r a man.';'I’m a pen.';],
Str_mat2 = {'July';'August';'September';}

输出结果:

Str_mat1 =
  2×10 char 数组
    'U r a man.'
    'I’m a pen.'
Str_mat2 =
  3×1 cell 数组
    {'July'     }
    {'August'   }
    {'September'}


MATLAB中还提供了strvcatchar函数用于纵向连接多个字符串。在使用strvcat函数连接多行字符串时,每行字符串的长度不要求相等,所有非最长字符串的右边会自动补偿空格,使得每行字符串的长度相同。char函数与strvcat函数类似,不过当多行字符串中有空字符串时,strvcat函数会自动进行忽略,而char函数会把空字符串也用空格补偿后再进行连接。


2-56:构造字符串示例。

在命令行窗口中输入:

A = 'top'; B = '';C = 'Bottom';
sABC = strvcat(A,B,C),cABC = char(A,B,C),size = [size(sABC);size(cABC)]

输出结果:

sABC =
  2×6 char 数组
    'top   '
    'Bottom'
cABC =
  3×6 char 数组
    'top   '
    '      '
    'Bottom'
size =
     2     6
     3     6


2.4.2  字符串比较函数


两个字符串之间的关系可以通过关系运算符来比较,也可以使用strcmp函数来比较两个字符串是否相同。


2-57:比较字符串示例。

在命令行窗口中输入:

A = (' Hello ' == ' Word ')

输出结果:

矩阵维度必须一致。


在命令行窗口中输入:

A = (' Hello ' == ' World '),B = (' Hello ' == ' Hello '),
C = strcmp(' Hello ',' World '),D = strcmp(' Hello ',' Hello ')

输出结果:

A =
  1×7 logical 数组
   1   0   0   0   1   0   1
B =
  1×7 logical 数组
   1   1   1   1   1   1   1
C =
  logical
   0
D =
  logical
   1


提示:在使用关系运算符进行比较时,会对字符串的每个字符进行比较,返回值是一个与字符串长度相同大小的数组,因此被比较的两个字符串的长度必须相同;而strcmp函数则根据两个字符串相同与否,返回值为数值01


2.4.3  字符串查找和替换函数


字符串的查找与搜索可以通过findstr函数来实现。


2-58:按下标值查找字符串示例。

在命令行窗口中输入:

String = 'Peter Piper picked a peck of pickled peppers. ';
findstr(String,' ')            % 搜索字符串内的空格位置

输出结果:

ans =
     6    12    19    21    26    29    37    46


在命令行窗口中输入:

findstr(String,'p')         % 搜索字母p

输出结果:

ans =
     9    13    22    30    38    40    41

在命令行窗口中输入:

findstr(String,'cow')         % 搜索单词cow

输出结果:

ans =
     []

在命令行窗口中输入:

findstr(String,'pick')         % 搜索单词pick


输出结果:

ans =
    13    30


提示:findstr函数对字母的大小写是敏感的。另外,findstr函数对字符串矩阵不起作用,因此对字符串矩阵的搜索只能通过循环索引矩阵内的元素实现。

字符串的替换可以通过对字符串数组中相应的元素直接赋值来实现,也可以使用strrep函数来实现。


2-59:替换字符串示例。

在命令行窗口中输入:

String = ' Peter Piper picked a peck of pickled peppers. ';
String(1:12) = ' Helen Smith'

输出结果:

String =
    ' Helen Smith picked a peck of pickled peppers. '


在命令行窗口中输入:

String = strrep(String,' Helen Smith',' Sabrina Crame')

输出结果:

String =
    ' Sabrina Crame picked a peck of pickled peppers. '


提示:直接赋值方法并不能使两个不同长度的字符串相互替换,而使用strrep函数可以替换两个任意长度的字符串。与findstr函数类似,strrep函数也对字符串矩阵不起作用。


2.4.4  字符串数值转换


MATLAB中还提供了大量字符串类型与数值类型之间的转换函数,如表2-26所示。

2-26  字符串类型与数值类型转换函数

函数名称

函数功能

abs

字符转换成ASCII

dec2hex

十进制数转换为十六进制字符串

fprindf

把格式化的文本写到文件中或显示屏上

hex2dec

十六进制字符串转换成十进制数

hex2num

十六进制字符串转换成IEEE浮点数

int2str

整数转换成字符串

lower

字符串转换成小写的

num2str

数字转换成字符串

setstr

ASCII转换成字符串

sprint

用格式控制数字转换成字符串

sscanf

用格式控制字符串转换成数字

str2mat

字符串转换成一个文本矩阵

str2num

字符串转换成数字

upper

字符串转换成大写的


2-60:将数值嵌入字符串示例。

在命令行窗口中输入:

rad = 2.5;area = pi * rad ^ 2;
string = [' A circle of radius ' num2str(rad) ' has an area of ' num2str(area) ' . '];
disp(string)

输出结果:

A circle of radius 2.5 has an area of 19.635 .



本章小结


本章介绍了MATLAB的基础知识及一些基本编程的句法形式和函数的使用方法,对MATLAB中的数据类型、矩阵的基本操作、运算符和字符串处理函数分别进行了举例说明,其中矩阵、函数句柄和结构体等内容后续还有更详细的介绍。本章的重点是数值、字符串等的各种操作及相互之间的转换,读者还应熟练掌握各个运算符的运算法则及优先级。


相关文章
matlab定点化_(fi函数)
matlab定点化_(fi函数)
|
2月前
|
算法 数据可视化 数据处理
MATLAB内置函数
【10月更文挑战第6天】本文详细介绍了MATLAB的内置函数和自定义函数,涵盖数学计算、矩阵操作、图形绘制等方面。通过具体代码示例,展示了如何使用内置函数和创建自定义函数,以及它们在性能、灵活性和可读性上的优劣。同时,文章还讨论了函数文件与脚本文件的区别,匿名函数和函数句柄的高级应用,帮助读者更好地利用MATLAB解决复杂问题。
|
2月前
|
存储 机器学习/深度学习 数据可视化
MATLAB脚本与函数
【10月更文挑战第4天】本文介绍了MATLAB脚本与函数的基本概念及编写方法,涵盖脚本和函数的创建、运行及优缺点,通过示例帮助初学者快速上手。同时,文章还涉及数据类型、控制结构、数据可视化、文件操作、错误处理等内容,提供了丰富的示例和学习资源,助力初学者逐步掌握MATLAB编程。
132 3
|
4月前
|
Python
【Python】实现MATLAB中计算两个矩形相交面积的rectint函数
Python中实现MATLAB中rectint函数的方法,该函数用于计算两个矩形相交区域的面积,并通过定义Rectangle类和calc_area函数展示了如何计算两个矩形的交集面积。
62 1
|
5月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于负相关误差函数的4集成BP神经网络matlab建模与仿真
**算法预览:** 图像显示无水印的2022a版MATLAB运行结果 **软件版本:** MATLAB 2022a **核心代码片段:** 省略展示 **理论概述:** NCL集成BP网络利用负相关提升泛化,结合多个弱模型减少错误关联。通过λ参数控制模型间负相关程度,λ>0增强集成效果,提高预测准确性和系统稳健性。
|
6月前
|
算法 数据可视化 数据挖掘
MATLAB中常用的数学函数及其应用示例
MATLAB中常用的数学函数及其应用示例
|
6月前
|
机器学习/深度学习 数据可视化 算法
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
65 0
|
7月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
7月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
7月前
|
调度
知识分享|分段函数线性化及matlab测试
知识分享|分段函数线性化及matlab测试

热门文章

最新文章