- Matlab 教程
- MATLAB - 首页
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 环境设置
- MATLAB - 编辑器
- MATLAB - 在线
- MATLAB - 工作区
- MATLAB - 语法
- MATLAB - 变量
- MATLAB - 命令
- MATLAB - 数据类型
- MATLAB - 运算符
- MATLAB - 日期和时间
- MATLAB - 数字
- MATLAB - 随机数
- MATLAB - 字符串和字符
- MATLAB - 文本格式化
- MATLAB - 时间表
- MATLAB - M 文件
- MATLAB - 冒号表示法
- MATLAB - 数据导入
- MATLAB - 数据输出
- MATLAB - 数据归一化
- MATLAB - 预定义变量
- MATLAB - 决策
- MATLAB - 决策
- MATLAB - If End 语句
- MATLAB - If Else 语句
- MATLAB - If…Elseif Else 语句
- MATLAB - 嵌套 If 语句
- MATLAB - Switch 语句
- MATLAB - 嵌套 Switch
- MATLAB - 循环
- MATLAB - 循环
- MATLAB - For 循环
- MATLAB - While 循环
- MATLAB - 嵌套循环
- MATLAB - Break 语句
- MATLAB - Continue 语句
- MATLAB - End 语句
- MATLAB - 数组
- MATLAB - 数组
- MATLAB - 向量
- MATLAB - 转置运算符
- MATLAB - 数组索引
- MATLAB - 多维数组
- MATLAB - 兼容数组
- MATLAB - 分类数组
- MATLAB - 元胞数组
- MATLAB - 矩阵
- MATLAB - 稀疏矩阵
- MATLAB - 表格
- MATLAB - 结构体
- MATLAB - 数组乘法
- MATLAB - 数组除法
- MATLAB - 数组函数
- MATLAB - 函数
- MATLAB - 函数
- MATLAB - 函数参数
- MATLAB - 匿名函数
- MATLAB - 嵌套函数
- MATLAB - 返回语句
- MATLAB - 空函数
- MATLAB - 局部函数
- MATLAB - 全局变量
- MATLAB - 函数句柄
- MATLAB - 滤波器函数
- MATLAB - 阶乘
- MATLAB - 私有函数
- MATLAB - 子函数
- MATLAB - 递归函数
- MATLAB - 函数优先级顺序
- MATLAB - 映射函数
- MATLAB - 平均值函数
- MATLAB - 结束函数
- MATLAB - 错误处理
- MATLAB - 错误处理
- MATLAB - Try...Catch 语句
- MATLAB - 调试
- MATLAB - 绘图
- MATLAB - 绘图
- MATLAB - 绘制数组
- MATLAB - 绘制向量
- MATLAB - 条形图
- MATLAB - 直方图
- MATLAB - 图形
- MATLAB - 二维线图
- MATLAB - 三维图
- MATLAB - 格式化图形
- MATLAB - 对数坐标轴图
- MATLAB - 绘制误差条
- MATLAB - 绘制三维等值线
- MATLAB - 极坐标图
- MATLAB - 散点图
- MATLAB - 绘制表达式或函数
- MATLAB - 绘制矩形
- MATLAB - 绘制频谱图
- MATLAB - 绘制网格曲面
- MATLAB - 绘制正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 线性插值
- MATLAB - 二维数组插值
- MATLAB - 三维数组插值
- MATLAB - 多项式
- MATLAB - 多项式
- MATLAB - 多项式加法
- MATLAB - 多项式乘法
- MATLAB - 多项式除法
- MATLAB - 多项式的导数
- MATLAB - 变换
- MATLAB - 变换
- MATLAB - 拉普拉斯变换
- MATLAB - 拉普拉斯滤波器
- MATLAB - 高斯-拉普拉斯滤波器
- MATLAB - 逆傅里叶变换
- MATLAB - 傅里叶变换
- MATLAB - 快速傅里叶变换
- MATLAB - 二维逆余弦变换
- MATLAB - 在坐标轴上添加图例
- 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 函数。如果字符串的长度不同,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 中字符串函数的简要说明:
| 函数 | 用途 |
|---|---|
| 用于将文本存储在字符数组中、组合字符数组等的功能。 | |
| blanks | 创建空格字符字符串 |
| cellstr | 从字符数组创建字符串的元胞数组 |
| char | 转换为字符数组(字符串) |
| iscellstr | 确定输入是否为字符串的元胞数组 |
| ischar | 确定项目是否为字符数组 |
| sprintf | 将数据格式化为字符串 |
| strcat | 水平连接字符串 |
| strjoin | 将元胞数组中的字符串连接成单个字符串 |
| 用于识别字符串部分、查找和替换子字符串的功能 | |
| ischar | 确定项目是否为字符数组 |
| isletter | 字母字符的数组元素 |
| isspace | 空格字符的数组元素 |
| isstrprop | 确定字符串是否属于指定的类别 |
| sscanf | 从字符串读取格式化数据 |
| strfind | 在一个字符串中查找另一个字符串 |
| strrep | 查找和替换子字符串 |
| strsplit | 在指定分隔符处分割字符串 |
| strtok | 字符串的选定部分 |
| validatestring | 检查文本字符串的有效性 |
| symvar | 确定表达式中的符号变量 |
| regexp | 匹配正则表达式(区分大小写) |
| regexpi | 匹配正则表达式(不区分大小写) |
| regexprep | 使用正则表达式替换字符串 |
| regexptranslate | 将字符串转换为正则表达式 |
| 用于字符串比较的功能 | |
| strcmp | 比较字符串(区分大小写) |
| strcmpi | 比较字符串(不区分大小写) |
| strncmp | 比较字符串的前 n 个字符(区分大小写) |
| strncmpi | 比较字符串的前 n 个字符(不区分大小写) |
| 用于将字符串更改为大写或小写、创建或删除空格的功能 | |
| deblank | 从字符串末尾去除尾随空格 |
| strtrim | 去除字符串开头和结尾的空格 |
| lower | 将字符串转换为小写 |
| upper | 将字符串转换为大写 |
| strjust | 对齐字符数组 |
示例
以下示例说明了一些上述字符串函数:
格式化字符串
创建一个脚本文件,并将以下代码键入其中:
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