日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Matlab 字符串比较

發布時間:2023/12/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matlab 字符串比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.cnblogs.com/anzhiwu815/p/5885097.html

  Matlab的優勢在于向量操作,字符串操作往往費時費力,但是如果能充分利用Matlab自帶的一些函數,也可以取得不錯的效果。下面就介紹一下字符串數組查找的小技巧。

  字符串數組我通常會選擇應用cell格式保存,下面的分析也是建立在這個前提下。

  

  【1】?strcmp() 函數

  strcmp() 函數的基本功能是比較兩個字符串是否相等,其基本用法是:

1 TF = strcmp(s1,s2);

  但是,如果我們要查找字符串數組中等于某字符串的索引時,該如果操作?strcmp() 函數也提供了這個功能,用法相同:

1 TF = strcmp(s1,s2);

  其中,s1是字符串數組,s2是字符串,返回值為邏輯類型,大小與字符串數組s1相同;

  【2】 strfind() 函數

  strcmp() 函數比較的是兩個字符串是否相等。但是如果想查找字符串數組中包含某字符串的記錄時,我們就可以選擇strfind() 函數。

1 k = strfind(str,pattern);

  輸出結果k表示pattern在str中出現的位置,若不出現,則返回[]。比如:

1 S = ‘Find the starting indices of the pattern string’; 2 k = strfind(S, ‘in’) 3 k = 4 2 15 19 45

  上面是strfind() 函數的基本功能,但是如果查找字符串數組中包含某字符串的索引時,strfind() 函數也可以大顯身手,返回和字符串數組相同大小的cell類型數據,每個cell為字符串出現位置,向量類型,比如:

1 cstr = {‘How much wood would a woodchuck’; ‘if a woodchuck could chuck wood?’}; 2 idx = strfind(cstr, ‘wood’) 3 idx = 4 [1*2 double] 5 [1*2 double] 6 Idx{:,:} 7 ans = 8 10 23 9 ans = 10 6 28

  【3】 一個問題:有一個字符串數組cstr1,要找到包含字符串str2的索引,該如果操作?

  一個直接的答案是:

1 idx = strfind(cstr1,str2); 2 finger(length(idx),1) = 1==0; 3 for i = 1:length(idx) 4 if ~isempty(idx(i)) 5 finger(i) = 1==1; 6 end 7 end

  思路是正確的,但是代碼量有點大,需要7行,而且速度較慢。其實要實現這個功能,1行代碼足矣。如下:

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

  上面的代碼還有另外一種寫法,

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

  三種方法輸出結果是一樣的,但是第2種方法速度最快,第1種方法次之,第3種方法最慢。大家可以進行測試下。

總結

以上是生活随笔為你收集整理的Matlab 字符串比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。