QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2587|回复: 3
打印 上一主题 下一主题

matlab中的匹配函数

[复制链接]
字体大小: 正常 放大

715

主题

213

听众

8600

积分

  • TA的每日心情
    开心
    2017-4-28 17:18
  • 签到天数: 415 天

    [LV.9]以坛为家II

    社区QQ达人 邮箱绑定达人 风雨历程奖 最具活力勋章 发帖功臣 元老勋章 新人进步奖

    群组乐考无忧考研公益讲座

    群组2017美赛两天强训

    群组模友会交流视频

    群组

    群组国赛讨论

    跳转到指定楼层
    1#
    发表于 2016-9-4 09:04 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    在Matlab中,这几个函数区分如下:

    (以下默认S1和S2是字符串,同样也适用于cell细胞类型数据,也就是循环对cell中每
    个元素分别判断即可。)
    findstr(S1,S2):寻找是否有S1和S2之间的匹配,真返回1,假返回0,双向;
    例:          s = 'How much wood would a woodchuck chuck?';
                      findstr(s,'a')    returns  21
                      findstr('a',s)    returns  21
                      findstr(s,'wood') returns  [10 23]
                      findstr(s,'Wood') returns  []
                      findstr(s,' ')    returns  [4 9 14 20 22 32]
    strfind(S1,S2):寻找S2是否匹配S1,和上面的唯一区别就是这个是单向的。请注意唯一
    的区别在例子中红字部分。
    例:       s = 'How much wood would a woodchuck chuck?';
                   strfind(s,'a')    returns  21
                   strfind('a',s)    returns  []
                   strfind(s,'wood') returns  [10 23]
                   strfind(s,'Wood') returns  []
                   strfind(s,' ')    returns  [4 9 14 20 22 32]
    strcmp(S1,S2):寻找S1和S2是否完全匹配,S1和S2没有顺序的区分。
    例:       s= 'wooden';
                  strcmp(s,'wood')    returns 0
                  strcmp(s,'wooden')    returns 1
                  strcmp('wooden',s)    returns 1
    strcnmp(S1,S2,n):寻找S1和S2的前n个字符是否完全匹配,S1和S2没有顺序的区分。
    例:       s= 'wooden';
                  strncmp(s,'wood',4)    returns 1
                  strncmp(s,'wood',5)    returns 0
                  strncmp(s,'wooden',4)    returns 1
                  strncmp('wooden',s,4)    returns 1
    strcmpi(S1,S2)与strncmpi(S1,S2,n)与上面分别对应的strcmp(S1,S2)与strncmp(S1,S
    2,n)完全相同,唯一的区分是匹配时不区分大小写。

    最重要的:
    strmatch(S1,S2):寻找S1是否匹配S2的开头部分,返回值是S1在S2中匹配的位置。
    strmatch(S1,S2,'exact'):寻找S1是否和S2完全匹配,返回值是S1在S2中匹配的位置。

    例:        S2=strvcat('max','minimax','maximum')
                   S2 =
                               max     
                               minimax
                               maximum
                   strmatch('max',S2) returns [1; 3] 表明1和3列匹配
                   strmatch('max',S2,'exact') returns [1] 表明1列完全匹配
    strmatch的一个好处是可以返回匹配的位置,而其余几个函数都只能返回判断值。

    但是,strmatch在2011b之后的版本将被删除不再使用。根据个人推测的原因和网上求证
    如下:
    1、strmatch的功能完全可以由以上的几个函数实现。
    2、strmatch是一个M文件,而其余几个函数都是内置的函数,因此在执行时,可以预测
    到strcmp的效率是远远高于strmatch的。
    3、另一个因素,strmatch要先创建一个矩阵来储存返回的真值的位置,且在循环的过程
    中这个矩阵在不断变化;而strcmp仅仅返回真假。因此推测效率更高。
    以上仅为推测,我没有做过测试。因此对于小程序来说,这点时间效率的对比实在不会
    太重要。总之,还是选择自己适合的函数就可以了。
    参考文献:
    <http://www.mathworks.com/matlabcentral/newsreader/view_thread/257590>
    <http://www.mathworks.com/matlabcentral/newsreader/view_thread/145799>
    <http://www.mathworks.com/matlabcentral/newsreader/view_thread/145799>
    <http://www.mathworks.de/matlabcentral/newsreader/view_thread/294626>

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    开始wyh        

    0

    主题

    13

    听众

    17

    积分

    升级  12.63%

  • TA的每日心情
    奋斗
    2016-9-7 15:46
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    自我介绍
    在校学生

    社区QQ达人

    群组2016国赛备战群组

    回复

    使用道具 举报

    1

    主题

    13

    听众

    106

    积分

    升级  3%

  • TA的每日心情
    无聊
    2016-10-26 16:51
  • 签到天数: 45 天

    [LV.5]常住居民I

    社区QQ达人

    群组Matlab讨论组

    群组2016国赛备战群组

    回复

    使用道具 举报

    1

    主题

    13

    听众

    106

    积分

    升级  3%

  • TA的每日心情
    无聊
    2016-10-26 16:51
  • 签到天数: 45 天

    [LV.5]常住居民I

    社区QQ达人

    群组Matlab讨论组

    群组2016国赛备战群组

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-9-15 19:34 , Processed in 0.479189 second(s), 67 queries .

    回顶部