Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果。下面就介绍一下字符串数组查找的小技巧。

字符串数组我通常会选择应用cell格式保存,下面的分析也是建立在这个前提下。

【1】 strcmp() 函数

strcmp() 函数的基本功能是比较两个字符串是否相等,其基本用法是:TF = strcmp(s1,s2);

但是,如果我们要查找字符串数组中等于某字符串的索引时,该如果操作?strcmp() 函数也提供了这个功能,用法相同:

TF = strcmp(s1,s2);

其中,s1是字符串数组,s2是字符串,返回值为逻辑类型,大小与字符串数组s1相同;

【2】 strfind() 函数

strcmp() 函数比较的是两个字符串是否相等。但是如果想查找字符串数组中包含某字符串的记录时,我们就可以选择strfind() 函数。

k = strfind(str,pattern);

输出结果k表示pattern在str中出现的位置,若不出现,则返回[]。比如:

S = ‘Find the starting indices of the pattern string’;

k = strfind(S, ‘in’)

k =

2    15    19    45

上面是strfind() 函数的基本功能,但是如果查找字符串数组中包含某字符串的索引时,strfind() 函数也可以大显身手,返回和字符串数组相同大小的cell类型数据,每个cell为字符串出现位置,向量类型,比如:

cstr = {‘How much wood would a woodchuck’; ‘if a woodchuck could chuck wood?’};

idx = strfind(cstr, ‘wood’)

idx =

[1*2 double]

[1*2 double]

Idx{:,:}

ans =

10    23

ans =

6    28

【3】 一个问题:

有一个字符串数组cstr1,要找到包含字符串str2的索引,该如果操作?

一个直接的答案是:

idx = strfind(cstr1,str2);

finger(length(idx),1) = 1==0;

for i = 1:length(idx)

if ~isempty(idx(i))

finger(i) = 1==1;

end

end

思路是正确的,但是代码量有点大,需要7行,而且速度较慢。其实要实现这个功能,1行代码足矣。如下:

finger = ~cellfun(@isempty, strfind(cstr1,str2));

上面的代码还有另外一种写法,

finger = cellfun(@(x) ~isempty(strfind(x,str2)), cstr1);

三种方法输出结果是一样的,但是第2种方法速度最快,第1种方法次之,第3种方法最慢。大家可以进行测试下。

matlab 查找字符串数组,Matlab之字符串数组查找相关推荐

  1. matlab 数组中查找字符串长度,Matlab 之 字符串数组查找

    Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...

  2. matlab 二维数组声明,Matlab字符串函数及二维数组

    Matlab字符串函数及二维数组 发布时间:2017年07月28日 评论数:抢沙发 阅读数:833 strcmp(Str1,Str2),finder(S,s),strcat(S1,S2),disp(s ...

  3. matlab stract结构_6. matlab入门——结构体、元胞数组、字符串

    1.结构体 (1)使用赋值方法创建结构体 %% 使用赋值方法创建结构体 person(1).name = '张三'; person(1).weight = 66; person(1).length = ...

  4. matlab字符串元胞数组,MATLAB字符串数组元胞数组和构架数组

    第三章MATLAB字符串数组.元 胞数组和构架数组 3.1字符串数组 3.1.1字符串入门 [例3.1-1]先请读者实际操作本例,以体会数值量与字符串的区别. clear a=12345.6789 c ...

  5. matlab中定义文本数组,MATLAB字符串数组的创建与运算

    MATLAB字符串数组的创建与运算 字符串数组主要用于可视化编程内容,如界面设计和图形绘制. 1.字符串变量的创建 字符变量的创建方法是:在指令窗口中先把待建的字符放在"单引号对" ...

  6. spring字符串判空_字符串工具类StringUtils实现字符串是否中文、字符串分割/判空/替换/查找、是否包含乱码及字符串数组合并等常规操作...

    一.前言 关于字符串工具类StringUtils实现字符串是否包含isChinese中文.是否包含isMessyCode乱码.常规数据类型转换.替换/删除/判空.两字符串数组mergeStringAr ...

  7. matlab 读指定字符,Matlab 文件读写(I/O)和字符串操作常用命令

    可以通过一个函数或脚本名称得到它的完整路径,同时还能处理函数重载的情况, 例如: >> which abs(0) C:\MATLAB7\toolbox\matlab\elfun\@doub ...

  8. MATLAB学习——数据类型(结构体、数组、单元数组、map容器类型)

    本篇文章对Matlab中的剩余数据类型进行介绍,它们分别为结构体类型.数组类型.单元数组类型.map容器类型. 结构体类型 与C语言中的结构体类型相似,Matlab中的结构体也可以通过字段存储多个不同 ...

  9. matlab的输入字符串接收,matlab字符串操作总结

    字符串操作总结 char(S1,S2,-) 利用给定的字符串或单元数组创建字符数组 double(S) 将字符串转化成ASC码形式 cellstr(S) 利用的给定的字符数组创建字符串单元数组 bla ...

  10. matlab字符串 删除,matlab字符串

    在MATLAB中创建字符串非常简单. 实际上,我们在前面的示例中已经使用了很多次. 例如,在命令提示符下键入以下内容: my_string = Yiibai Yiibai MATLAB MATLAB执 ...

最新文章

  1. python集合(set)+常见方法+交叉并补
  2. Activity LaunchMode验证
  3. 【降维解法:最大字段和-最大子矩阵和-最终版最大子长方体和】【UVA10755】Garbage Heap...
  4. Oracle中PLSQL中一个例外的写法
  5. Spring MVC:使用基于Java的配置创建一个简单的Controller
  6. js冒泡排序,简单的冒泡排序
  7. 信息学奥赛一本通(1067:整数的个数)
  8. 圣诞节海报设计需要的手写字体素材
  9. CVE-2012-4792Microsoft Internet Explorer 释放后使用漏洞
  10. PaddlePaddle(1)——让人拍案叫绝的创意都是如何诞生的
  11. CentOS下启动mysql出现“MySQL Daemon failed to start”解决办法
  12. 面试题之说几个Object类常用方法以及作用
  13. oracle判断字符串以什么开头_sql语句判断字符串以什么什么开头
  14. 究竟什么是token??
  15. 系统集成项目管理工程师11《项目风险管理》
  16. 药品市场分析怎么写?(总结归纳了20份药品报告的经验分享)
  17. CSS实现带阴影效果的三角形
  18. python工程师认证证书报考条件_Python工程师需要具备什么条件
  19. 什么是opc ua通信?opc ua的介绍
  20. ACPI中各种state的关系

热门文章

  1. 手机便签软件哪个好用?哪种手机便签软件好使用
  2. 将Visual Leak Detector集成至Visual Studio 2019
  3. 用 dfuse 交易预测执行工具优先赢得 Gas 竞价
  4. 什么是嵌入式系统?STM32能跑linux吗?
  5. 外星人笔记本计算机,目前收集整理的外星人笔记本型号大全
  6. 项目管理论文十大领域各一篇
  7. python turtle图片保存_turtle绘图保存png,jpg等图片
  8. Simulink与控制系统仿真笔记01
  9. 错误Could not locate executable null\bin\winutils.exe in the Hadoop binaries的解决方案
  10. Android工具 - 随机测试(猴子)