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 =

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

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

idx = strfind(cstr, ‘wood’)

idx =

[* double]

[* double]

Idx{:,:}

ans =

ans =

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

一个直接的答案是:

idx = strfind(cstr1,str2);

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

for i = :length(idx)

if ~isempty(idx(i))

finger(i) = ==;

end

end

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

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

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

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

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

.net字符串数组查找方式效率比较

下面是代码: static void Main(string[] args) { string[] arr = new string[] { "AAA", "BBBB&q ...

matlab中的字符串数组与函数调用

1, matlab中的字符串就是1维字符数组,即如: a = 'dddssd'; b = 'lsde'; c = [a, b]; 当然也可以: c= strcat(a, b); 2, matlab中的 ...

014 Longest Common Prefix 查找字符串数组中最长的公共前缀字符串

编写一个函数来查找字符串数组中最长的公共前缀字符串. 详见:https://leetcode.com/problems/longest-common-prefix/description/ 实现语言: ...

Matlab之字符串处理

Matlab处理字符串 1.取得部分字符串 我们有一个字符串 file='20131030_113109.TemporaryAlias.Poly5'; 简单操作举例: >> a=file( ...

MATLAB 的字符串分析

MATLAB的字符串分析. 字符串实际上是指1Xn 的字符数组. MATLAB软件具有强大的字符串处理功能,提供了很多的字符或字符串处理函数,包括字符串的创建.字符串的属性.比较.查找以及字符串的转换 ...

Javascript-常用字符串数组操作

字符串的操作在编写Js的过程中是不可避免的 因为它太多的API 还有相似的API让我们很头痛 为了避免以后遇到模拟两可的问题 还是做个笔记比较好 把常用的字符串操作记录下来成笔记 方便以后查找 No1 ...

JavaScript内置对象(字符串,数组,日期的处理)

Date 日期对象 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义一个时间对象 : var Udate=new Date(); 注意:使用关键字new,Date()的首 ...

随机推荐

svn中cleanup作用

我们开发项目的时候,用版本控制软件svn提交项目时候难免会遇到cleanup,那么这个提示是怎么产生的呢?它有什么作用呢? 产生原因:SVN 本地更新时,由于一些操作中断更新,如磁盘空间不够,用户取消 ...

JavaScript使用自定义事件实现简单的模块化开发

WEB前端最常见驱动方式就是事件了, 所有交互等等都是通过事件,前端的常见事件有: UI事件: 焦点事件: 鼠标事件: 滚轮事件: 文本事件: 键盘事件: 变动事件: 现在网页上有一个输入框, 如果我 ...

mongo .update

db.classes.update({"count":{$gt:20}},{$set:{"name":"c4"}},false,false) ...

PERL 脚本

PERL: Practical Extraction and Report Language 参考文档 1.Perl 5 version 24.0 documentation

调用webservice,解析返回数据为xml格式的字符串,进行数据绑定

DataSet ds = new DataSet(); byte[] byteArray = System.Text.Encoding.Unicode.GetBytes("<?xml ...

if form1&period;showmodal&colon;&equals;mrok then 什么意思

if form1.showmodal:=mrok then 这句话什么意思? 最佳答案 这个问题说来话长,且听我慢慢道来... 首先,你仔细看一看,所有的命令按钮(不论是Button还是BitBtn) ...

如何判断手机收有几张SIM卡

//判断卡槽1中是不是有卡 boolean hasIccCard1 = MSimTelephonyManager.getDefault().hasIccCard(0); //判断卡槽2中是不是有卡 b ...

C指针(转)

第一章 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有 ...

LeetCode 392&period; Is Subsequence

Given a string s and a string t, check if s is subsequence of t. You may assume that there is only l ...

【转】安卓Fragment不完全介绍

转两篇博客: 1.http://blog.csdn.net/lmj623565791/article/details/37970961 2.http://blog.csdn.net/lmj623565 ...

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

  1. 切割字符串长度php,C++_C语言中计算字符串长度与分割字符串的方法,C语言strlen()函数:返回字符串 - phpStudy...

    C语言中计算字符串长度与分割字符串的方法 C语言strlen()函数:返回字符串的长度头文件: #include strlen()函数用来计算字符串的长度,其原型为: unsigned int str ...

  2. 2108. 找出数组中的第一个回文字符串

    给你一个字符串数组 words ,找出并返回数组中的 第一个回文字符串 .如果不存在满足要求的字符串,返回一个 空字符串 "" . 回文字符串 的定义为:如果一个字符串正着读和反着 ...

  3. LeetCode 2108. 找出数组中的第一个回文字符串

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串数组 words ,找出并返回数组中的 第一个回文字符串 .如果不存在满足要求的字符串,返回一个 空字符串 "" . 回 ...

  4. Java黑皮书课后题第8章:*8.27(列排序)用下面的方法实现一个二维数组中的列排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵

    *8.27(列排序)用下面的方法实现一个二维数组中的列排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...

  5. Java黑皮书课后题第8章:*8.26(行排序)用下面的方法实现一个二维数组中的行排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵

    *8.26(行排序)用下面的方法实现一个二维数组中的行排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...

  6. ASP如何计算中英文混合字符串长度和截取字符串

    用ASP做网站的时候经常会碰到要截取字符串的情况.ASP中的Len函数不管是中文字符,还是英文字符,统统按一个单位来计算,由于一个中文字符的宽度是一个英文字符宽度的两倍,在中英文混合的情况下字符串实际 ...

  7. php 去除二维数组中的包含某一个值的数组

    今天写程序,遇到一个的问题. 我想把一个二维数组中的包含某一个值的数组去掉,并重新生成索引下标 例如: $all_zone=array(array("id"=>"R ...

  8. 在线字符串长度计算,字符串统计工具

    在线字符串长度计算,字符串统计工具 在线字符串长度计算,字符串统计工具 本工具支持统计给定的字符串的总数,中文总数,英文总数,符号总数和数字总数等数据. 客户端实时计算,数据实时更新. https:/ ...

  9. JavaScript求数组中每个元素的个数,如数组str = [1,2,3,2,4,1,2]中元素2的个数为2。要求:使用对象知识来实现,输出结果为对象,对象包含数组元素和个数值。

    求数组中每个元素的个数,如数组str = [1,2,3,2,4,1,2]中元素2的个数为2. 要求:使用对象知识来实现,输出结果为对象,对象包含数组元素和个数值. <script>var ...

最新文章

  1. 前端入门(雨滴特效,css)
  2. r指引到文件夹_R语言中进行文件夹及文件夹内文件操作范例
  3. Pytorch学习-torch.max()和min()深度解析
  4. 浙江省第6届程序设计竞赛结题报告汇总 zoj3202-3212
  5. Visual Studio Code的用户设置相关
  6. 面试-线程池的成长之路
  7. NOIP2001-普及组复赛-第2题-最大公约数和最小公倍数问题
  8. Spring Boot 初步小结
  9. 时间序列-LSTM长期预测
  10. 2021-04-03
  11. 简单详细的OD破解教程(转)
  12. 超星高级语言程序设计实验作业 (实验02 分支与循环程序设计)(二)
  13. 标准差 php,PHP 计算Cpk以及标准差
  14. Kindle 文档生成工具
  15. 教你把mov格式的视频转换mp4
  16. idea中安装maven3.6.1
  17. TCP与UDP协议初步学习——网络环境中分布式进程通信的基本概念
  18. python获取鼠标选取的内容_Python三维可视化:鼠标选取交互操作
  19. 人工智能导论(2)——启发式算法(八数码问题)
  20. Android-传感器开发-方向判断

热门文章

  1. VSCode中安装live server插件时出现Open a folder or workspace... (File -> Open Folder)错误
  2. 热点综述 | 空间多组学技术在肿瘤免疫微环境研究中的应用
  3. 网易游戏游戏开发工程师笔试试题
  4. 6论文降重小技巧(建议收藏)
  5. Caffe编译踩坑(一):/usr/include/boost/system/error_code.hpp:233:21: error: looser throw specifier
  6. 硅云账号注册过程与步骤详细图文教程
  7. 英特尔推出世界最大 FPGA 芯片;任正非表示华为尚未直接和美国公司商谈5G技术授权;OpenTitan开源……...
  8. 带按钮的图片横幅广告_显示带有文字的横幅记住使用cookie的选择
  9. 电力英语计算机教材,实用科技英语(21世纪高等教育计算机规划教材)
  10. 第六届蓝桥杯JavaA组省赛真题