- Matlab教程
- MATLAB - 主页
- MATLAB - 概述
- MATLAB - 环境设置
- MATLAB - 语法
- MATLAB - 变量
- MATLAB - 命令
- MATLAB - M 文件
- MATLAB - 数据类型
- MATLAB - 运算符
- MATLAB - 决策
- MATLAB - 循环
- MATLAB - 向量
- MATLAB - 矩阵
- MATLAB - 数组
- MATLAB - 冒号表示法
- MATLAB - 数字
- MATLAB - 字符串
- MATLAB - 函数
- MATLAB - 数据导入
- MATLAB - 数据输出
- MATLAB 高级版
- MATLAB - 绘图
- MATLAB - 图形
- MATLAB - 代数
- MATLAB - 微积分
- MATLAB - 微分
- MATLAB - 集成
- MATLAB - 多项式
- MATLAB - 变换
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB 有用资源
- MATLAB - 快速指南
- MATLAB - 有用的资源
- MATLAB - 讨论
MATLAB - 字符串
在 MATLAB 中创建字符串非常简单。事实上,我们已经使用过很多次了。例如,您在命令提示符中键入以下内容 -
my_string = 'Tutorials Point'
MATLAB 将执行上述语句并返回以下结果 -
my_string = Tutorials Point
MATLAB 将所有变量视为数组,而字符串则视为字符数组。让我们使用whos命令来检查上面创建的变量 -
whos
MATLAB 将执行上述语句并返回以下结果 -
Name Size Bytes Class Attributes my_string 1x16 32 char
有趣的是,您可以使用uint8或uint16等数字转换函数将字符串中的字符转换为其数字代码。char函数将整数向量转换回字符 -
例子
创建一个脚本文件并在其中输入以下代码 -
my_string = 'Tutorial''s Point'; str_ascii = uint8(my_string) % 8-bit ascii values str_back_to_char= char(str_ascii) str_16bit = uint16(my_string) % 16-bit ascii values str_back_to_char = char(str_16bit)
当您运行该文件时,它会显示以下结果 -
str_ascii = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116 str_back_to_char = Tutorial's Point str_16bit = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116 str_back_to_char = Tutorial's Point
矩形字符数组
到目前为止我们讨论的字符串都是一维字符数组;然而,我们需要存储的还不止这些。我们需要在程序中存储更多维度的文本数据。这是通过创建矩形字符数组来实现的。
创建矩形字符数组的最简单方法是根据需要垂直或水平连接两个或多个一维字符数组。
您可以通过以下方式之一垂直组合字符串 -
使用 MATLAB 连接运算符[]并用分号 (;) 分隔每一行。请注意,在此方法中,每行必须包含相同数量的字符。对于不同长度的字符串,应根据需要用空格字符填充。
使用字符函数。如果字符串的长度不同,则 char 会用尾随空格填充较短的字符串,以便每行具有相同数量的字符。
例子
创建一个脚本文件并在其中输入以下代码 -
doc_profile = ['Zara Ali '; ... 'Sr. Surgeon '; ... 'R N Tagore Cardiology Research Center'] doc_profile = char('Zara Ali', 'Sr. Surgeon', ... 'RN Tagore Cardiology Research Center')
当您运行该文件时,它会显示以下结果 -
doc_profile = Zara Ali Sr. Surgeon R N Tagore Cardiology Research Center doc_profile = Zara Ali Sr. Surgeon RN Tagore Cardiology Research Center
您可以通过以下任一方式水平组合字符串 -
使用 MATLAB 连接运算符[]并用逗号或空格分隔输入字符串。此方法保留输入数组中的所有尾随空格。
使用字符串连接函数strcat。此方法删除输入中的尾随空格。
例子
创建一个脚本文件并在其中输入以下代码 -
name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = [name ', ' position ', ' worksAt] profile = strcat(name, ', ', position, ', ', worksAt)
当您运行该文件时,它会显示以下结果 -
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
将字符串组合成元胞数组
从我们之前的讨论中可以清楚地看出,组合不同长度的字符串可能会很痛苦,因为数组中的所有字符串都必须具有相同的长度。我们在字符串末尾使用空格来均衡它们的长度。
然而,组合字符串的更有效方法是将结果数组转换为元胞数组。
MATLAB 元胞数组可以在数组中保存不同大小和类型的数据。元胞数组提供了一种更灵活的方式来存储不同长度的字符串。
cellstr函数将字符数组转换为字符串元胞数组。
例子
创建一个脚本文件并在其中输入以下代码 -
name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = char(name, position, worksAt); profile = cellstr(profile); disp(profile)
当您运行该文件时,它会显示以下结果 -
{ [1,1] = Zara Ali [2,1] = Sr. Surgeon [3,1] = R N Tagore Cardiology Research Center }
MATLAB 中的字符串函数
MATLAB 提供了大量的字符串函数来创建、组合、解析、比较和操作字符串。
下表提供了 MATLAB 中字符串函数的简要说明 -
功能 | 目的 |
---|---|
用于在字符数组中存储文本、组合字符数组等的函数。 | |
空白 | 创建空白字符的字符串 |
细胞因子 | 从字符数组创建字符串元胞数组 |
字符 | 转换为字符数组(字符串) |
iscellstr | 确定输入是否为字符串元胞数组 |
伊斯查尔 | 判断item是否为字符数组 |
冲刺函数 | 将数据格式化为字符串 |
字符串猫 | 水平连接字符串 |
斯特联 | 将元胞数组中的字符串连接成单个字符串 |
用于识别字符串部分、查找和替换子字符串的函数 | |
伊斯查尔 | 判断item是否为字符数组 |
岛信 | 数组元素为字母 |
空间 | 数组元素为空格字符 |
isstrprop | 判断字符串是否属于指定类别 |
扫描仪 | 从字符串中读取格式化数据 |
搜索结果 | 在另一个字符串中查找一个字符串 |
斯特雷普 | 查找并替换子字符串 |
分割线 | 在指定分隔符处分割字符串 |
斯特托克 | 字符串的选定部分 |
验证字符串 | 检查文本字符串的有效性 |
符号变量 | 确定表达式中的符号变量 |
正则表达式 | 匹配正则表达式(区分大小写) |
正则表达式 | 匹配正则表达式(不区分大小写) |
正则表达式 | 使用正则表达式替换字符串 |
正则表达式翻译 | 将字符串转换为正则表达式 |
字符串比较函数 | |
STRCMP | 比较字符串(区分大小写) |
STRCMPI | 比较字符串(不区分大小写) |
STRNCMP | 比较字符串的前 n 个字符(区分大小写) |
结构体 | 比较字符串的前 n 个字符(不区分大小写) |
用于将字符串更改为大写或小写、创建或删除空格的函数 | |
去空白 | 从字符串末尾去除尾随空格 |
字符串修剪 | 删除字符串中的前导和尾随空格 |
降低 | 将字符串转换为小写 |
上 | 将字符串转换为大写 |
调整 | 对齐字符数组 |
例子
以下示例说明了一些上述字符串函数 -
格式化字符串
创建一个脚本文件并在其中输入以下代码 -
A = pi*1000*ones(1,5); sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
当您运行该文件时,它会显示以下结果 -
ans = 3141.592654 3141.59 +3141.59 3141.59 000003141.59
连接字符串
创建一个脚本文件并在其中输入以下代码 -
%cell array of strings str_array = {'red','blue','green', 'yellow', 'orange'}; % Join strings in cell array into single string str1 = strjoin(str_array, "-") str2 = strjoin(str_array, ",")
当您运行该文件时,它会显示以下结果 -
str1 = red-blue-green-yellow-orange str2 = red,blue,green,yellow,orange
查找和替换字符串
创建一个脚本文件并在其中输入以下代码 -
students = {'Zara Ali', 'Neha Bhatnagar', ... 'Monica Malik', 'Madhu Gautam', ... 'Madhu Sharma', 'Bhawna Sharma',... 'Nuha Ali', 'Reva Dutta', ... 'Sunaina Ali', 'Sofia Kabir'}; % The strrep function searches and replaces sub-string. new_student = strrep(students(8), 'Reva', 'Poulomi') % Display first names first_names = strtok(students)
当您运行该文件时,它会显示以下结果 -
new_student = { [1,1] = Poulomi Dutta } first_names = { [1,1] = Zara [1,2] = Neha [1,3] = Monica [1,4] = Madhu [1,5] = Madhu [1,6] = Bhawna [1,7] = Nuha [1,8] = Reva [1,9] = Sunaina [1,10] = Sofia }
比较字符串
创建一个脚本文件并在其中输入以下代码 -
str1 = 'This is test' str2 = 'This is text' if (strcmp(str1, str2)) sprintf('%s and %s are equal', str1, str2) else sprintf('%s and %s are not equal', str1, str2) end
当您运行该文件时,它会显示以下结果 -
str1 = This is test str2 = This is text ans = This is test and This is text are not equal