?講解視頻:可以在bilibili搜索《MATLAB教程新手入門篇——數(shù)學(xué)建模清風(fēng)主講》。?
MATLAB教程新手入門篇(數(shù)學(xué)建模清風(fēng)主講,適合零基礎(chǔ)同學(xué)觀看)_嗶哩嗶哩_bilibili
5.3.2 字符向量元胞數(shù)組
在上一節(jié)中,我們詳細(xì)介紹了一般的元胞數(shù)組的使用方法。本節(jié)將重點(diǎn)學(xué)習(xí)字符向量元胞數(shù)組,這是一種特殊的元胞數(shù)組,元胞中的每個數(shù)據(jù)都是字符向量類型。
在 MATLAB 2016b 版本以前,字符向量元胞數(shù)組是處理和分析文本數(shù)據(jù)的核心工具。但是,自 MATLAB 2017a 版本起,官方推薦使用更為高效的字符串類型來處理文本。這種新的字符串類型采用英文雙引號(")進(jìn)行標(biāo)識,單個這類文本被稱為字符串標(biāo)量。將多個字符串標(biāo)量放到同一個數(shù)組中,便構(gòu)成了一個字符串?dāng)?shù)組。關(guān)于這一點(diǎn),我們將在下一小節(jié)中進(jìn)行更深入的探討。即便引入了這種新的文本類型,本節(jié)介紹的文本處理方法依然至關(guān)重要,它們不僅助力于理解即將介紹的字符串類型,而且許多文本處理函數(shù)能同時適用于字符向量元胞數(shù)組和字符串類型。以下是本節(jié)將要學(xué)習(xí)的一些基礎(chǔ)文本處理函數(shù),這些函數(shù)自 MATLAB 2016b 版本以前就已經(jīng)存在:
(1)cellstr函數(shù):將其他類型的文本轉(zhuǎn)換為字符向量元胞數(shù)組
cellstr 函數(shù)可以將其他類型的文本數(shù)據(jù)轉(zhuǎn)換為字符向量元胞數(shù)組,它的基本用法非常簡單:C = cellstr(A),這里的A通常是字符數(shù)組,也可以是我們下一節(jié)要學(xué)的字符串?dāng)?shù)組,C就是轉(zhuǎn)換后得到的字符向量元胞數(shù)組。下面我們來看幾個例子:
從上面的例子可以看出,如果輸入的數(shù)據(jù)類型是字符數(shù)組(包括字符向量和字符矩陣),cellstr函數(shù)在轉(zhuǎn)換過程中會自動刪除每行尾部的空白字符。這相當(dāng)于對轉(zhuǎn)換后的每個元胞中的數(shù)據(jù)應(yīng)用了 deblank 函數(shù)。然而,如果轉(zhuǎn)換的對象是字符串?dāng)?shù)組(將在下一節(jié)學(xué)習(xí)),則不會刪除尾部的空白字符。
下面我們來看一道例題:請將字符向量'1'、 '2'一直到'100'保存到元胞數(shù)組C中。
這個題目有多種實(shí)現(xiàn)的思路,最容易想到的就是使用for循環(huán),我們可以使用num2str函數(shù)將數(shù)字1至100轉(zhuǎn)換為字符向量,然后依次儲存到元胞數(shù)組C中。
現(xiàn)在考考大家,如果不用循環(huán)語句大家可以解決這個問題嗎?
在之前的小節(jié)中,我們介紹過 num2str 函數(shù),當(dāng)輸入變量分別是行向量和列向量時:
我們重點(diǎn)來看列向量的轉(zhuǎn)換結(jié)果,轉(zhuǎn)換后的結(jié)果是一個字符矩陣,每一行的字符向量由原來的數(shù)字轉(zhuǎn)換而成,因此借助這個思路我們可以給出相應(yīng)的代碼:
然而,轉(zhuǎn)換后的數(shù)字前面有num2str函數(shù)自動填充的空格,由于cellstr函數(shù)不會自動刪除前面的空白字符,因此我們需要手動處理。這里我們可以使用strip函數(shù)或者strtrim函數(shù)刪除C中各字符向量開頭的空格:
當(dāng)然,這個例題僅僅是為了幫助大家復(fù)習(xí)相關(guān)的知識點(diǎn),如果大家學(xué)習(xí)了下一節(jié)要介紹的字符串?dāng)?shù)組,只需要一行代碼就能解決:C = cellstr(string(1:100))。
拓展:和cellfun函數(shù)類似,MATLAB中還有 arrayfun 函數(shù),它可以對數(shù)組中的每個元素應(yīng)用給定的函數(shù)。這個函數(shù)我們會在后續(xù)的章節(jié)進(jìn)行講解。使用arrayfun函數(shù)也只需要一行代碼就能解決:C = arrayfun(@num2str, 1:100, 'UniformOutput', false) 。
(2)isletter、isspace和isstrprop函數(shù):識別特定種類的字符
在MATLAB中,isletter、isspace 和 isstrprop 函數(shù)用于識別文本中特定種類的字符。這三個函數(shù)在文本處理中非常有用,尤其是在字符數(shù)據(jù)的預(yù)處理和分析階段,其中isstrprop 函數(shù)是前兩個函數(shù)的進(jìn)階版。
isletter 函數(shù)用于判斷字符是否為字母,它的使用方法非常簡單:TF = isletter(A),輸入?yún)?shù)A通常是字符數(shù)組或字符串標(biāo)量(如果A是其他數(shù)據(jù)類型,那么isletter函數(shù)會返回全為0的邏輯數(shù)組或者直接報錯);返回值TF是一個邏輯數(shù)組,當(dāng) A 中的某個字符是字母時,TF中對應(yīng)位置的元素是邏輯值1,否則是邏輯值0。(注意:isletter函數(shù)不僅會識別英文字母,還會識別其他語言中的文字,例如中文的漢字也會被識別為邏輯值1)
如果你想處理字符向量元胞數(shù)組,你可以借助 cellfun 函數(shù),給定isletter函數(shù)句柄并指定'UniformOutput'參數(shù)為false(isletter函數(shù)的返回值不是標(biāo)量):
isspace函數(shù)和isletter 函數(shù)的使用方法類似,它用于判斷字符是否為空白字符,如空格、制表符、換行符。
下面我們來看一個思考題:能否找出所有被isspace函數(shù)識別為空白字符對應(yīng)的Unicode編碼?
在Unicode字符集中,十進(jìn)制0 到 2^16-1 (十六進(jìn)制0000-FFFF)涵蓋了絕大多數(shù)常用字符,包括各種語言的文字、符號、以及特殊字符,因此我們識別的字符范圍可以限定在這個區(qū)間內(nèi)。下面我們給出代碼:
上面代碼中的ind是一個邏輯數(shù)組,all_unicode(ind)就是使用ind對變量all_unicode進(jìn)行邏輯索引,得到這些空白字符對應(yīng)的Unicode編碼。限于篇幅,右側(cè)的結(jié)果沒有顯示完整,完整的結(jié)果中有25個編碼,感興趣的同學(xué)可以查看本章附錄2:MATLAB中的空白字符。
isstrprop函數(shù)是前兩個函數(shù)的進(jìn)階版本,它不僅能夠識別字母和空白字符,還能識別更廣泛的文本形式,如數(shù)字、標(biāo)點(diǎn)符號、控制字符等。此外,isstrprop函數(shù)具備處理多種類型的文本數(shù)據(jù)的能力,包括字符數(shù)組、字符串標(biāo)量、數(shù)值數(shù)組(其中的元素代表 Unicode 編碼)、字符向量元胞數(shù)組,以及字符串?dāng)?shù)組。(prop來自單詞property,可翻譯為屬性)
isstrprop 函數(shù)的基本用法是 TF = isstrprop(str, category)。其中,第一個輸入?yún)?shù)str 表示文本數(shù)據(jù), 第二個輸入?yún)?shù)category 是你想要檢測的字符類別。它支持多種字符類別,例如 'alpha'(字母)、'digit'(數(shù)字)等。以下它是支持的字符類別的列表(來自MATLAB官網(wǎng)):
根據(jù)輸入文本數(shù)據(jù) str 的數(shù)據(jù)類型,isstrprop 函數(shù)返回不同類型的結(jié)果:
- 如果str是字符數(shù)組、字符串標(biāo)量或數(shù)值數(shù)組,則TF為邏輯數(shù)組類型;
- 如果str是字符向量元胞數(shù)組或字符串?dāng)?shù)組,則TF為元胞數(shù)組類型。
此外,我們還可以在輸入?yún)?shù)的最后加上'ForceCellOutput', true,這樣可以強(qiáng)制返回值TF為一個元胞數(shù)組,即使 str 是一個字符數(shù)組、字符串標(biāo)量或數(shù)值數(shù)組也是如此。
我們來看例子:
下面再來看一個實(shí)際的例子。假設(shè)字符向量元胞數(shù)組c2中保存著客戶的信息,包括客戶的姓名、手機(jī)號和所在城市,我們的目標(biāo)就是提取客戶的手機(jī)號。如果每位客戶的手機(jī)號在字符向量中的位置都是固定的,例如都是1至11位,那么就可以借助字符向量的索引來提取手機(jī)號,但下面給的例子顯然不滿足這樣的規(guī)則,此時我們可以借助isstrprop函數(shù):
isstrprop函數(shù)返回了一個邏輯向量構(gòu)成的元胞數(shù)組TF,邏輯向量中為1的位置就是手機(jī)號所在的位置。接下來,我們可以通過循環(huán)遍歷 c2,并使用TF中的邏輯索引提取手機(jī)號碼:
通過 isstrprop 函數(shù),我們可以有效地處理和分析含有混合類型文本的數(shù)據(jù),特別是在提取特定格式的信息(如電話號碼)時。它的靈活性和強(qiáng)大的識別能力使其成為MATLAB文本分析的有力工具。
拓展:能否不使用循環(huán)語句直接提取元胞數(shù)組中每一個字符向量對應(yīng)的電話號碼信息?
下面我們給出兩種解決方案(這兩種方法涉及到后面章節(jié)的內(nèi)容,這里僅作演示):
第一種方法利用了 cellfun 函數(shù)和匿名函數(shù)。我們首先定義了一個匿名函數(shù) f,該函數(shù)通過 isstrprop 函數(shù)識別并提取字符向量中的數(shù)字。然后,我們利用 cellfun 函數(shù),將這個匿名函數(shù)應(yīng)用于元胞數(shù)組 c2 中的每個字符向量,以便提取電話號碼。在本書后續(xù)關(guān)于自定義函數(shù)的章節(jié)中,我們將對匿名函數(shù)的使用方法進(jìn)行詳細(xì)的介紹。
第二種方法借助了 MATLAB 強(qiáng)大的正則表達(dá)式處理能力。我們首先定義一個匹配11位數(shù)字的電話號碼模式,然后使用 regexp 函數(shù)來從每個字符向量中提取符合該模式的文本。在下一章中,我們將詳細(xì)探討正則表達(dá)式的使用技巧。
(3)strfind函數(shù)和strrep函數(shù):查找與替換文本
在處理文本數(shù)據(jù)時,我們經(jīng)常需要查找指定的文本,并在必要時進(jìn)行替換。事實(shí)上這一需求在文本處理中非常常見,下圖是記事本和Word軟件的查找替換界面:
在MATLAB中,對文本數(shù)據(jù)進(jìn)行查找和替換可以通過 strfind 和 strrep 函數(shù)實(shí)現(xiàn)(rep來自單詞replace,單詞find和replace翻譯成中文分別是查找和替換),下面我們直接引用MATLAB官網(wǎng)的幫助文檔來介紹它們的用法。
先來看strfind函數(shù)的幫助文檔:
k = strfind(str,pat) 在 str 中搜索出現(xiàn)的 pat。輸出 k 指示 str 中每次出現(xiàn)的 pat 的起始索引。如果未找到 pat,則 strfind 返回一個空數(shù)組 []。strfind 函數(shù)執(zhí)行區(qū)分大小寫的搜索。
str:輸入文本,指定為字符串?dāng)?shù)組、字符向量或字符向量元胞數(shù)組。
pat:搜索模式,指定為下列值之一:字符串標(biāo)量、字符向量和pattern標(biāo)量。
如果 str 是字符向量或字符串標(biāo)量,則 strfind 返回 double 類型的向量。
如果 str 是字符向量元胞數(shù)組或字符串?dāng)?shù)組,則 strfind 返回 double 類型的向量元胞數(shù)組(即元胞數(shù)組中的數(shù)據(jù)為double類型的向量)。
當(dāng) cellOutput 參數(shù)設(shè)置為 true 時,即使 str 是字符向量, ?k = strfind(str,pat,'ForceCellOutput',cellOutput) 也會強(qiáng)制 strfind 以元胞數(shù)組形式返回 k。
讓我們通過幾個實(shí)例來具體了解 strfind 函數(shù)的用法:
以上示例清晰展示了 strfind 函數(shù)在各類文本數(shù)據(jù)中查找指定文本的能力,同時也突出了它對大小寫敏感的特性。
另外,在上方介紹搜索模式pat時,提到了一個新概念:“pattern標(biāo)量”。MATLAB從 2020b 版本開始,引入了 pattern 類型作為一種新的搜索模式。pattern 類型專門用于搜索和匹配文本,它提供了一些高級的匹配功能,大家可以在MATLAB官網(wǎng)搜索關(guān)鍵詞:pattern。
pattern可翻譯為模式,以下是MATLAB官方文檔中對它的介紹:
為了更好地理解 pattern 類型的應(yīng)用,讓我們看兩個例子。假設(shè)我們想在文本中匹配數(shù)字,可以這樣編寫代碼(請確保您的MATLAB版本不低于2020b,否則會報錯):
盡管 pattern 類型是一個非常有用的功能,但在本教程中,我們不打算深入探討它,主要基于以下三點(diǎn)考慮:首先,pattern 類型對MATLAB版本有較高要求,僅在2020b及以上版本中可用,低版本中使用會導(dǎo)致錯誤。其次,pattern 類型涉及多個新函數(shù),這些函數(shù)名稱較長,對非英語母語的讀者可能不夠友好,且不易記憶。最后,我們在下一章要學(xué)習(xí)的正則表達(dá)式功能可以完全替代 pattern 類型的功能。正則表達(dá)式是一種廣泛使用且功能強(qiáng)大的文本處理工具,在多種編程語言中都有應(yīng)用,且各語言間的語法高度相似。
因此,為了保持教程的實(shí)用性和通用性,我們將重點(diǎn)放在下一章要介紹的正則表達(dá)式上,這是一種更廣泛認(rèn)可和使用的文本處理方法。
接下來,讓我們了解一下 strrep 函數(shù)的用法。strrep 函數(shù)用于將舊文本替換成新的文本。
newStr = strrep(str,old,new) 將 str 中出現(xiàn)的所有 old 都替換為 new。
str:輸入文本,指定為字符串?dāng)?shù)組、字符向量或字符向量元胞數(shù)組。
old:要替換的子字符串(注意:這里所說的“字符串”可以理解為文本,并不僅限于字符串這種數(shù)據(jù)類型),指定為字符串?dāng)?shù)組、字符向量或字符向量元胞數(shù)組。
new:新的子字符串(子文本),指定為字符串?dāng)?shù)組、字符向量或字符向量元胞數(shù)組。
如果任何輸入?yún)?shù)是非標(biāo)量字符串?dāng)?shù)組或字符向量元胞數(shù)組,則其他輸入?yún)?shù)的大小必須兼容。
下面我們來看例子:
在最基本的用法中,strrep 函數(shù)用于替換指定的子文本。例如,我們將c1中的'喜歡'替換為了'不喜歡'。此外, strrep 函數(shù)在替換時是區(qū)分英文字母的大小寫的,例如我們將c2中的'matlab'替換為了'MATLAB'。
strrep 函數(shù)還可以接受元胞數(shù)組作為輸入,這允許用戶在單個函數(shù)調(diào)用中執(zhí)行多種不同的替換操作,返回的結(jié)果也是元胞數(shù)組形式。
此外,strrep 函數(shù)在處理重疊文本時的特性值得關(guān)注。當(dāng)要替換的文本相互重疊時,strrep 函數(shù)的處理方式會有特定的表現(xiàn)。下面我們用 strrep 來處理一個包含重疊文本的例子:
大家觀察MATLAB的返回結(jié)果,結(jié)果中出現(xiàn)了三次*,這是因?yàn)閟trrep函數(shù)認(rèn)為'abababab'中出現(xiàn)了三次'aba',即允許重疊子文本。下圖給出了兩種不同的替換方式,strrep函數(shù)使用的就是左側(cè)的方式。
如果你希望使用右側(cè)的方法進(jìn)行替換,那么你可以使用MATLAB在2016b版本中推出的replace函數(shù),它在替換時不允許重疊子文本:
另外,replace函數(shù)和strrep函數(shù)用法非常相似,newStr = replace(str,old,new) 將所有出現(xiàn)的子文本 old 替換為 new。如果 old 包含多個子文本,則 new 必須與 old 具有相同的大小,或者必須為單個子文本。注意:如果old或new不是標(biāo)量(即不是單個文本,而是包含多個文本的字符向量元胞數(shù)組或者字符串?dāng)?shù)組),replace函數(shù)和strrep函數(shù)返回的結(jié)果有很大差異:
大家可以對比 strrep 函數(shù)的返回結(jié)果,當(dāng)輸入?yún)?shù)old 或 new 中的文本不是標(biāo)量時,strrep 函數(shù)會依次將 old 和 new 中的文本進(jìn)行匹配,并分別進(jìn)行替換。因此,如果輸入的 old 或 new 是元胞數(shù)組或字符串?dāng)?shù)組,strrep 函數(shù)會返回一個相應(yīng)大小的元胞數(shù)組或字符串?dāng)?shù)組,其中包含了每次替換的結(jié)果。相比之下,replace 函數(shù)在處理非標(biāo)量文本時,它的返回值是一個標(biāo)量,即相當(dāng)于在該文本中進(jìn)行了多輪替換。
此外,replace函數(shù)的old參數(shù)還支持pattern 數(shù)組,前文介紹過,pattern 類型專門用于搜索和匹配文本,我們教程不會具體講解,下一章中將使用正則表達(dá)式代替它。
(4)strjoin函數(shù):對數(shù)組中的文本進(jìn)行連接
有時候我們希望對字符向量元胞數(shù)組或者字符串?dāng)?shù)組中的文本進(jìn)行連接,例如使用空格連接不同的單詞、使用換行符連接各段文字等。strjoin函數(shù)可以幫助我們完成這個任務(wù),下面來看它的基本用法:
str = strjoin(C) 使用空格將 C 的元素與相鄰的元素之間連接起來,構(gòu)造 str。C 可以是字符向量元胞數(shù)組或字符串?dāng)?shù)組。
str = strjoin(C,delimiter) 使用delimiter將 C 的元素與相鄰的元素之間連接起來,構(gòu)造 str。delimiter是分隔字符,它通常是字符向量類型。如果它是字符向量元胞數(shù)組或字符串?dāng)?shù)組,則它包含的元素數(shù)必須比 C 中包含的元素數(shù)少一個,此時strjoin 通過交錯插入 delimiter 和 C 的元素來形成 str。
它的使用方法非常簡單,我們直接來看例子:
注意,在使用 strjoin 函數(shù)時,分隔符可能包括一些在文本中不易直接表示的特殊字符,比如上述示例中的換行符。在MATLAB中,為了便于使用換行符,提供了專用的 newline 函數(shù)。此外,換行符的ASCII編碼是10,因此我們還可以通過 char(10) 來表示換行符。
對于其他一些不方便使用文本表示的字符,你也可以使用對應(yīng)的ASCII編碼來表示。下面我們將介紹另一種表示特殊字符的方法:使用轉(zhuǎn)義字符。
什么是轉(zhuǎn)義字符?轉(zhuǎn)義字符在許多編程語言中都存在,它是一類特殊的字符,用于在文本中表示特定的字符,以下是MATLAB中常用的轉(zhuǎn)義字符:
(注:上表中常用的轉(zhuǎn)義字符為\t和\n,另外\\表示的是反斜杠\本身,類似于字符向量中兩個連續(xù)的單引號''表示的是單引號'本身。)
strjoin函數(shù)的分隔字符中可以包括上表列舉的轉(zhuǎn)義字符,這樣可以更方便的對文本進(jìn)行連接。
此外,MATLAB中的轉(zhuǎn)義字符單獨(dú)使用沒有含義,它們通常需要結(jié)合文本處理相關(guān)的內(nèi)置函數(shù)一起使用。
通過上述示例,我們可以看到 strjoin 函數(shù)如何有效地將數(shù)組中的文本元素連接起來,不論是使用默認(rèn)的空格還是選用自定義的分隔符。這一特性使得 strjoin 函數(shù)特別適用于整合零散的文本數(shù)據(jù),進(jìn)而方便后續(xù)的處理和展示。
(5)strsplit函數(shù):在指定分隔符處拆分文本
當(dāng)我們需要將一個長文本拆分成多個更短的文本時,就需要用到strsplit函數(shù)。它的功能非常強(qiáng)大,以下是MATLAB官網(wǎng)給出的它的基本用法:
C = strsplit(str)在空白處將str拆分為C,str指定為字符向量或字符串標(biāo)量。
返回值C是字符向量元胞數(shù)組??瞻鬃址刃в诩蟵' ','\f','\n','\r','\t','\v'} 中的任何轉(zhuǎn)義序列。如果 str 具有連續(xù)的空白字符,則 strsplit 將它們視為一個空格。
C = strsplit(str, delimiter)在 delimiter 指定的分隔符處拆分 str。
如果str具有連續(xù)的分隔符,并且它們之間沒有其他字符,則strsplit將它們視為一個分隔符。例如,strsplit('Hello.world','.') 和 strsplit('Hello...world','.') 返回相同的輸出。
delimiter:分隔字符,指定為字符向量、1×n的字符向量元胞數(shù)組或 1×n的字符串?dāng)?shù)組。在 delimiter 中指定的文本不會顯示在輸出 C 中。
在元胞數(shù)組或字符串?dāng)?shù)組中可以指定多個分隔符。strsplit函數(shù)根據(jù)delimiter的元素拆分 str。分隔符在 delimiter 中顯示的順序無關(guān)緊要,除非有多個分隔符都從str中的同一字符處開始匹配。在此種情況下,strsplit 將在delimiter中的第一個匹配分隔符處進(jìn)行拆分。
通過上面的介紹可以看出,strsplit函數(shù)和strjoin函數(shù)的功能剛好相反,我們來看例子:
除此之外,MATLAB 允許通過名稱-值參數(shù)來調(diào)整 strsplit函數(shù)的行為。
什么是名稱-值參數(shù)?
名稱-值參數(shù)是一種在 MATLAB 內(nèi)置函數(shù)中常見的可選參數(shù)形式,它提供了一種直觀的方式來配置附加選項(xiàng)。這類參數(shù)一般成對出現(xiàn),其中一個參數(shù)作為固定文本,定義了要設(shè)置或修改的選項(xiàng),另一個參數(shù)則是該選項(xiàng)的具體值。名稱-值參數(shù)必須位于其他參數(shù)之后,且它們的出現(xiàn)順序并不影響函數(shù)的執(zhí)行結(jié)果。
例如,在我們之前學(xué)習(xí)的 cellfun 函數(shù)中,'UniformOutput'是參數(shù)的名稱,而true或false是它的值,用于指定函數(shù)返回結(jié)果的格式。同樣的,在isstrprop函數(shù)中,'ForceCellOutput'是參數(shù)的名稱,其值為true或false,用于控制函數(shù)返回元胞數(shù)組形式的結(jié)果。(后續(xù)章節(jié)要學(xué)的plot函數(shù)的名稱-值參數(shù)非常多,大家可以提前查看它的幫助文檔)
另外,從MATLAB2021a版本開始,可以將名稱-值參數(shù)使用下面的形式表示:
Name1 = Value1, ..., NameN = ValueN,其中 Name 是參數(shù)名稱,Value 是對應(yīng)的值。
注意:為了保持代碼的向下兼容性,即確保代碼能在早期版本的MATLAB中正常運(yùn)行,建議大家采用傳統(tǒng)的表示方式:'Name1', Value1, ..., 'NameN', ValueN。另外,請將名稱指定為單引號的字符向量形式,使用雙引號形式的字符串可能會在低版本MATLAB中報錯。
strsplit函數(shù)支持下面兩對名稱-值參數(shù):
(1)CollapseDelimiters — 多分隔符處理,指定為true (默認(rèn)值)或者 false
多分隔符處理,指定為由 'CollapseDelimiters' 和 true/false 組成的名稱-值參數(shù)。如果為 true,則 str 中的連續(xù)分隔符將作為同一個分隔符處理。如果為 false,則連續(xù)分隔符將作為單獨(dú)的分隔符處理,這會導(dǎo)致匹配的分隔符之間出現(xiàn)空字符向量 '' (0×0 char)元素。
(2)DelimiterType — 分隔符類型,指定為 'Simple' (默認(rèn))或者 'RegularExpression'
分隔符類型這對參數(shù)的名稱為 'DelimiterType',它的值指定為下面兩個字符向量之一:
- 'Simple': strsplit 函數(shù)將 delimiter 當(dāng)作普通文本處理;
- 'RegularExpression': strsplit 函數(shù)將 delimiter 作為正則表達(dá)式處理。
注意,這里再次提到了正則表達(dá)式,相關(guān)內(nèi)容我們會在下一章中介紹。借助正則表達(dá)式,可以大大拓展strsplit函數(shù)的應(yīng)用場景。
對本小節(jié)的總結(jié)
在本節(jié)中,我們深入探討了MATLAB中與文本處理相關(guān)的基礎(chǔ)函數(shù)。這些函數(shù)為處理和分析各種文本數(shù)據(jù)提供了必要的工具,無論是簡單的文本操作還是復(fù)雜的文本分析,它們都能勝任。
首先,我們介紹了 cellstr函數(shù),它能將不同類型的文本數(shù)據(jù)轉(zhuǎn)換成字符向量元胞數(shù)組,為后續(xù)的文本處理打下基礎(chǔ)。
隨后,我們探討了 isletter和 isspace函數(shù),這兩個函數(shù)用于識別字母和空白字符,是文本分析中常用的工具。isstrprop函數(shù)作為它們的進(jìn)階版本,能夠識別更多種類的字符,其靈活性和強(qiáng)大的識別能力使其成為MATLAB文本分析中的重要工具。
我們還學(xué)習(xí)了 strfind函數(shù),它用于在文本中查找子文本并返回相應(yīng)的索引,這對于定位特定信息非常重要。
緊接著,strrep函數(shù)和 replace函數(shù)則用于將文本中的舊文本替換為新文本,這對于編輯和更新文本數(shù)據(jù)非常有用。
在連接文本方面,strjoin函數(shù)可以將數(shù)組中的文本元素用特定的分隔符連接起來,為構(gòu)建更加整潔和一致的文本提供了便利。
最后,我們討論了 strsplit函數(shù),它能夠根據(jù)指定的分隔符將長文本拆分為更短的文本,這在處理大量文本數(shù)據(jù)時特別有用。
這些函數(shù)為我們處理各種文本格式提供了極大的靈活性。通過各種實(shí)例,我們看到了這些函數(shù)在實(shí)際應(yīng)用中的強(qiáng)大功能。
在接下來的小節(jié)中,我們將重點(diǎn)介紹這些函數(shù)在綜合應(yīng)用中的實(shí)際案例,展示如何將這些獨(dú)立的函數(shù)組合起來,解決更為復(fù)雜和實(shí)際的文本處理任務(wù)。這些綜合應(yīng)用案例不僅將鞏固我們對于各個函數(shù)的理解,還將展示 MATLAB 在文本處理方面的卓越能力。文章來源:http://www.zghlxwxcb.cn/news/detail-777994.html
??點(diǎn)擊下方的CSDN專欄閱讀下一篇文章:
MATLAB入門課程專欄文章來源地址http://www.zghlxwxcb.cn/news/detail-777994.html
到了這里,關(guān)于第5章:5.3.2 字符向量元胞數(shù)組(MATLAB入門課程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!