• MATLAB字符串


    MATLAB字符串

    本节我们学习如何在MATLAB中创建一个字符串。

    例如:

    my_string = 'w3cschool''在线教程'

    MATLAB执行上述语句,返回以下结果:

    1. my_string =
    2. w3cschool在线教程

    MATLAB 认为所有变量,数组和字符串被视为字符数组。

    让我们使用命令检查上面创建的变量:

    whos

    MATLAB执行上面的语句,返回以下结果:

    1. Name Size Bytes Class Attributes
    2. my_string 1x16 32 char

    你可以使用数字转换函数,如 uint8 或 uint16 字符串中的字符转换成数字代码。 

    char 函数整数向量转换回字符: 

    详细例子

    在MATLAB中建立一个脚本文件,输入下述代码:

    1. my_string = 'w3cschool''在线教程';
    2. str_ascii = uint8(my_string) % 8-bit ascii values
    3. str_back_to_char= char(str_ascii)
    4. str_16bit = uint16(my_string) % 16-bit ascii values
    5. str_back_to_char = char(str_16bit)

    运行该文件,显示以下结果:

    1. str_ascii =
    2. Columns 1 through 14
    3. 84 117 116 111 114 105 97 108 39 115 32 80 111 105
    4. Columns 15 through 16
    5. 110 116
    6. str_back_to_char =
    7. w3cschool在线教程
    8. str_16bit =
    9. Columns 1 through 10
    10. 84 117 116 111 114 105 97 108 39 115
    11. Columns 11 through 16
    12. 32 80 111 105 110 116
    13. str_back_to_char =
    14. w3cschool在线教程

    MATLAB矩形字符数组

    目前为止我们已经讨论过的字符串的字符数组是一维,但是我们需要更立体的文本数据存储在我们的程序中。这是通过创建的矩形的字符数组。

    建立一个矩形字符数组的最简单的方法是通过连接两个或两个以上的一维字符数组,无论是垂直或水平的要求。

    您可以通过以下方式之一合并垂直字符串:

    • 使用 MATLAB 连接运算符 [] 和分离每行一个分号(;)。请注意,在该方法中的每一行必须包含相同的字符数。不同长度的字符串,应该根据需要使用空格字符。

    • 使用 char 函数。如果字符串长度不同和 char 补齐较短尾随空白,使每一行都有相同数量的字符的字符串。

    详细例子

    在MATLAB中建立一个脚本文件,输入下述代码:

    1. doc_profile = ['Zara Ali '; ...
    2. 'Sr. Surgeon '; ...
    3. 'R N Tagore Cardiology Research Center']
    4. doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
    5. 'RN Tagore Cardiology Research Center')

    运行该文件,显示以下结果:

    1. doc_profile =
    2. Zara Ali
    3. Sr. Surgeon
    4. R N Tagore Cardiology Research Center
    5. doc_profile =
    6. Zara Ali
    7. Sr. Surgeon
    8. RN Tagore Cardiology Research Center

    采取下述方式之一横向合并字符串:

    • 使用MATLAB串连运算,[],并用逗号或空格分隔输入字符串。这种方法保留任何尾随空格输入数组。

    • 使用字符串连接函数 strcat。此方法删除尾随空格输入

    详细例子

    在MATLAB中建立一个脚本文件,并输入下述代码:

    1. name = 'Zara Ali ';
    2. position = 'Sr. Surgeon ';
    3. worksAt = 'R N Tagore Cardiology Research Center';
    4. profile = [name ', ' position ', ' worksAt]
    5. profile = strcat(name, ', ', position, ', ', worksAt)

    运行该文件,显示以下结果:

    1. profile =
    2. Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
    3. profile =
    4. Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center

    将字符串组合成单元格数组

    从前面的学习中,很明显,组合不同长度的字符串可能会很痛苦,因为数组中的所有字符串都必须具有相同的长度。在字符串的末尾使用了空格,使其长度相等。

    然而,组合字符串的更有效的方法是将生成的数组转换为单元格数组。

    MATLAB单元格数组可以在数组中保存不同大小和类型的数据。单元格数组提供了一种更灵活的方法来存储不同长度的字符串。

    cellstr​函数将字符数组转换为字符串的单元格数组。

    详细例子

    在MATLAB中建立一个脚本文件,输入下述代码:

    1. name = 'Zara Ali ';
    2. position = 'Sr. Surgeon ';
    3. worksAt = 'R N Tagore Cardiology Research Center';
    4. profile = char(name, position, worksAt);
    5. profile = cellstr(profile);
    6. disp(profile)

    运行该文件,显示以下结果:

    1. 'Zara Ali'
    2. 'Sr. Surgeon'
    3. '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对齐字符数组

    详细例子

    接下来对上述的字符串的函数进行举例说明:

    格式化字符串

    在MATLAB中建立一个脚本文件,输入下述代码:

    1. A = pi*1000*ones(1,5);
    2. sprintf(' %f
    3. %.2f
    4. %+.2f
    5. %12.2f
    6. %012.2f
    7. ', A)

    运行该文件,显示以下结果:

    1. ans =
    2. 3141.592654
    3. 3141.59
    4. +3141.59
    5. 3141.59
    6. 000003141.59

    加入字符串

    在MATLAB中建立一个脚本文件,输入下述代码:

    1. %cell array of strings
    2. str_array = {'red','blue','green', 'yellow', 'orange'};
    3. % Join strings in cell array into single string
    4. str1 = strjoin(str_array, "-")
    5. str2 = strjoin(str_array, ",")

    运行该文件,显示以下结果:

    1. str1 =
    2. red blue green yellow orange
    3. str2 =
    4. red , blue , green , yellow , orange

    查找和替换字符串

    在MATLAB中建立一个脚本文件,并输入下述代码:

    1. students = {'Zara Ali', 'Neha Bhatnagar', ...
    2. 'Monica Malik', 'Madhu Gautam', ...
    3. 'Madhu Sharma', 'Bhawna Sharma',...
    4. 'Nuha Ali', 'Reva Dutta', ...
    5. 'Sunaina Ali', 'Sofia Kabir'};
    6. % The strrep function searches and replaces sub-string.
    7. new_student = strrep(students(8), 'Reva', 'Poulomi')
    8. % Display first names
    9. first_names = strtok(students)

    运行该文件,显示以下结果:

    1. new_student =
    2. 'Poulomi Dutta'
    3. first_names =
    4. Columns 1 through 6
    5. 'Zara' 'Neha' 'Monica' 'Madhu' 'Madhu' 'Bhawna'
    6. Columns 7 through 10
    7. 'Nuha' 'Reva' 'Sunaina' 'Sofia'

    比较字符串

    在MATLAB中建立一个脚本文件,输入下述代码:

    1. str1 = 'This is test'
    2. str2 = 'This is text'
    3. if (strcmp(str1, str2))
    4. sprintf('%s and %s are equal', str1, str2)
    5. else
    6. sprintf('%s and %s are not equal', str1, str2)
    7. end

    运行该文件,显示以下结果:

    1. str1 =
    2. This is test
    3. str2 =
    4. This is text
    5. ans =
    6. This is test and This is text are not equal
  • 相关阅读:
    linux-网络管理
    HazelEngine 学习记录 - Single Shader 2D Renderer
    捷报连连!怿星科技荣获北京市科学技术进步奖一等奖
    超高荧光量子产率近红外金纳米团簇
    交换机端口安全
    基于ProXmoX VE的虚拟化家庭服务器(篇一)—ProXmoX VE 安装及基础配置
    什么软件支持汇总和计算员工业绩
    OpenCV | 直线拟合fitline函数(Python)
    【JS逆向 + python模拟获取】今天逆向一个简单的半混淆网站,获取token的生成方法,并用python模拟获取数据
    5G学习-OSI参考模型
  • 原文地址:https://blog.csdn.net/std86021/article/details/128031119