Matlab中比较文本

这篇博客介绍了如何在MATLAB中使用关系运算符比较字符串数组,包括相等性和不等性比较,以及如何对字符串数组进行排序。此外,还讲解了如何比较字符向量,检查字符串数组和字符数组中的特定字符,并提供了相关示例。
摘要由CSDN通过智能技术生成

目录

比较字符串数组是否相等

使用其他关系运算符比较字符串数组

对字符串数组排序

比较字符向量

检查字符串数组和字符数组中的字符


        以不同的方式比较字符数组和字符串数组中的文本。R2016b 中引入了字符串数组。可以使用关系运算符和 strcmp 函数来比较字符串数组和字符向量。可以使用sort函数对字符串数组进行排序,就像对任何其他类型的数组进行排序一样。MATLAB® 还提供用于检查文本片段中的字符的函数。例如,可以确定字符向量或字符串数组中的哪些字符为字母或空格字符。

比较字符串数组是否相等

        可以使用关系运算符 == 和 ~= 来比较字符串数组是否相等。当比较字符串数组时,输出为一个逻辑数组。如果关系为 true,则该逻辑数组包含1;如果关系不为true,则包含0

        创建两个字符串标量。从 R2017a 开始,可以使用双引号创建字符串。

str1 = "Hello";
str2 = "World";
str1,str2

str1 = 
"Hello"
str2 = 
"World"

        比较 str1 和 str2 是否相等。

str1 == str2

ans = logical
   0

        将一个包含多个元素的字符串数组与一个字符串标量进行比较。

str1 = ["Mercury","Gemini","Apollo";...
        "Skylab","Skylab B","International Space Station"];
str2 = "Apollo";
str1 == str2

ans = 2x3 logical array

   0   0   1
   0   0   0

        将一个字符串数组与一个字符向量进行比较。只要其中一个变量为字符串数组,就可以进行比较。

chr = 'Gemini';
TF = (str1 == chr)

TF = 2x3 logical array

   0   1   0
   0   0   0

        使用 TF 对 str1 进行索引以提取与 Gemini 匹配的字符串元素。您可以使用逻辑数组对某个数组进行索引。

str1(TF)

ans = 
"Gemini"

        使用 ~= 运算符进行不相等比较。对 str1 进行索引以提取与 'Gemini' 不匹配的元素。

TF = (str1 ~= chr)
TF = 2x3 logical array

   1   0   1
   1   1   1
str1(TF)

ans = 5x1 string
    "Mercury"
    "Skylab"
    "Skylab B"
    "Apollo"
    "International Space Station"

        比较两个非标量字符串数组。当您比较两个非标量数组时,这两个数组的大小必须相同。

str2 = ["Mercury","Mars","Apollo";...
        "Jupiter","Saturn","Neptune"];
TF = (str1 == str2)

TF = 2x3 logical array

   1   0   1
   0   0   0

        对 str1 进行索引以提取匹配项。

str1(TF)

ans = 2x1 string
    "Mercury"
    "Apollo"

使用其他关系运算符比较字符串数组

        也可以使用关系运算符 >>=< 和 <= 来比较字符串。以大写字母开头的字符串位于以小写字母开头的字符串前面。例如,字符串 "ABC" 小于 "abc"。数字和某些标点符号也位于字母前面。

"ABC" < "abc"
ans = logical
   1

        使用 > 运算符将一个包含名字的字符串数组与另一个名字进行比较。名字 Sanchezde Ponte 和 Nash 位于 Matthews 后面,因为 Sd 和 N 都大于 M

str = ["Sanchez","Jones","de Ponte","Crosby","Nash"]; 
TF = (str > "Matthews")
TF = 1x5 logical array

   1   0   1   0   1


str(TF)
ans = 1x3 string
    "Sanchez"    "de Ponte"    "Nash"

对字符串数组排序

        可以对字符串数组进行排序。MATLAB® 使用 UTF-16 字符编码方案以 Unicode® 方式存储字符。字符和字符串数组按 UTF-16 代码点顺序进行排序。对于同时也是 ASCII 字符的字符,此顺序意味着大写字母在小写字母之前。数字和某些标点符号也在字母之前。

        对字符串数组 str 进行排序。

sort(str)

ans = 1x5 string
    "Crosby"    "Jones"    "Nash"    "Sanchez"    "de Ponte"

        对一个 2×3 字符串数组进行排序。sort 函数会单独对每列中的元素进行排序。

sort(str2)

ans = 2x3 string
    "Jupiter"    "Mars"      "Apollo" 
    "Mercury"    "Saturn"    "Neptune"

        要对每行中的元素进行排序,请沿第二个维度对 str2 进行排序。

ort(str2,2)

ans = 2x3 string
    "Apollo"     "Mars"       "Mercury"
    "Jupiter"    "Neptune"    "Saturn" 

比较字符向量

        可以对字符向量和字符向量元胞数组进行相互比较。使用 strcmp 函数比较两个字符向量,或者使用 strncmp 比较前 N 个字符。也可以使用 strcmpi 和 strncmpi 进行不区分大小写的比较。

        使用 strcmp 函数比较两个字符向量。chr1 和 chr2 不相同。

chr1 = 'hello';
chr2 = 'help';
TF = strcmp(chr1,chr2)

TF = logical
   0

        请注意,MATLAB strcmpstrcmp的C版本不同。当两个字符数组相同而非不同时,strcmp的C版本会返回 0

        使用 strncmp 函数比较前两个字符。由于两个字符向量都以字符 he 开头,因此 TF 为 1

TF = strncmp(chr1,chr2,2)

TF = logical
   1

        比较两个字符向量元胞数组。strcmp 会返回一个与元胞数组大小相同的逻辑数组。        

C1 = {'pizza'; 'chips'; 'candy'};
C2 = {'pizza'; 'chocolate'; 'pretzels'};
strcmp(C1,C2)

ans = 3x1 logical array

   1
   0
   0

检查字符串数组和字符数组中的字符

        可以使用 isstrpropisletter 和 isspace 函数检查字符串数组或字符数组中的字符。

  • isstrprop 可检查字符串数组或字符数组中的字符。

  • isletter 和 isspace 函数只能检查字符数组中的字符。

        确定字符向量中的哪些字符是空格字符。isspace 会返回一个与 chr 大小相同的逻辑向量。

chr = 'Four score and seven years ago';
TF = isspace(chr)

TF = 1x30 logical array

   0   0   0   0   1   0   0   0   0   0   1   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0

        isstrprop 函数可以查询字符的许多不同特性。isstrprop 可以确定字符串或字符向量中的字符是字母、字母数字字符、十进制或十六进制数字还是标点字符。

        确定字符串中的哪些字符是标点符号。isstrprop 会返回一个长度等于 str 中的字符数量的逻辑向量。

str = "A horse! A horse! My kingdom for a horse!"
str = 
"A horse! A horse! My kingdom for a horse!"
isstrprop(str,"punct")

ans = 1x41 logical array

   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1

        确定字符向量 chr 中的哪些字符是字母。

isstrprop(chr,"alpha")

ans = 1x30 logical array

   1   1   1   1   0   1   1   1   1   1   0   1   1   1   0   1   1   1   1   1   0   1   1   1   1   1   0   1   1   1

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB创建图形用户界面(GUI)时,可以通过调整图形对象的位置属性来实现文本的居显示。这里以一个常见的文本对象——`uicontrol`控件为例,介绍如何将文本显示。 首先,你需要确定你想要居文本对象的位置,以及整个GUI界面的大小。然后,你将需要计算出如何设置文本对象的位置属性(`Position`属性),使其能够在指定区域内居。具体步骤如下: 1. 确定文本对象的边界框(bounding box),即包含文本的最小矩形区域,这通常由文本的宽度和高度决定。 2. 计算GUI界面区域的心点坐标。 3. 将文本对象的心点坐标设置为GUI界面的心点坐标。 以下是一个简单的示例代码,展示如何在MATLAB显示一个`uicontrol`控件内的文本: ```matlab % 创建一个figure窗口 hFig = figure('Units', 'pixels', 'Position', [200, 200, 400, 300]); % 设置GUI的心点坐标 guiCenterX = 200 + 400 / 2; % 水平方向的心点 guiCenterY = 200 + 300 / 2; % 垂直方向的心点 % 创建一个按钮,并设置其居显示 buttonPosition = [guiCenterX - 50, guiCenterY - 15, 100, 30]; % 假设文本宽高为100x30 hButton = uicontrol('Style', 'pushbutton', 'String', '点击我', ... 'Position', buttonPosition, 'Units', 'pixels'); % 注意:这个例子按钮的位置是手动计算得出的,实际使用可能需要动态计算文本的实际大小 ``` 在实际应用,你可能需要根据实际的文本内容动态计算文本的宽度和高度,以便更准确地设置居的位置。这可以通过`textextent`函数来实现,它可以测量给定文本在当前字体下的尺寸。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值