- MATLAB量化金融分析基礎與實戰
- 馬萌
- 1395字
- 2020-05-28 17:52:05
1.5 字符和字符串
1.5.1 實例7:字符串的創建與元素提取
例39:使用單引號將需要創建的字符串內容包括起來。

例40:利用單引號做轉義字符,使字符串中包含單引號。
>>B=′I am a string containing′′!′
B=
I am a string containing′!
例41:取已經建立的字符串A的前3個字符。
>>A(1:3)
ans=
I a
例42:取已經建立的字符串A的最后3個字符。
>>A(end-2:end)
ans=
ng!
例43:取已經建立的字符串的奇數位字符。
>>C=′1234567890′
C=
1234567890
>>C(1:2:end)
ans=
13579
例44:查看字符串A的長度。

例45:創建一個空字符。

1.5.2 實例8:字符串的查找、替換與刪除
例46:利用strfind函數查看A中是否包含字符串′am′。

其中返回的3表示A的第3個字符開始匹配字符串′am′。
例47:利用strrep函數將A中的′am′替換為′AM′。
>>strrep(A,′am′,′AM′)
ans=
I AM a string!
例48:利用strrep函數將A中的′am′刪除。
>>strrep(A,′am′,′′)
ans=
I a string!
1.5.3 實例9:strcat函數的常見錯誤
例49:利用strcat函數將字符串′AA′、′_′和′BB′連接起來。
>>strcat(′AA′,′_′,′BB′)
ans=
AA_BB
tips:strcat函數可以將字符串與元胞數組(cell)拼接,但是輸出類型為cell,使用時需注意。
>>class(strcat(′a′,′_′,{′b′}))
ans=
cell
例50:利用方括號將字符串′AA′、′_′和′BB′連接起來。>>[′AA′′_′′BB′]
ans=
AA_BB
注意使用加號會對字符串的ASCII碼做加法運算。

1.5.4 實例10:str2num函數和str2double函數的區別
例51:str2num函數與str2double函數對比。
str2num函數腳本中使用了eval函數,故當需要轉換的字符串含有函數句柄或表達式時會輸出此函數或表達式的值,而str2double則僅轉換字符到數字,遇到表達式會返回NaN。

1.5.5 字符串比較函數的應用
常用的4個字符串比較函數見表1-9。
表1-9 常用的字符串比較函數

例52:字符串比較。

1.5.6 正則表達式概述及常見使用方法
常用正則表達式功能函數見表1-10,常用元字符及其匹配規則見表1-11。
表1-10 常用正則表達式函數

表1-11 正則表達匹配規則

例53:找到以b開始且以t結束,中間含有一個或多個字符的最長字符串(貪婪模式)。

startIndex表示從第4個字符開始匹配,startIndex表示匹配結束于第11個字符。

表1-12給出了regexp函數中參數outkey的可取值。
表1-12 regexp函數中參數outkey的可取值

可以同時指定多個outkey和與之對應的輸出變量。

例54:找到以b開始且以t結束,中間含有一個或多個字符的最短字符串(非貪婪模式)。

例55:利用tokens參數找到以b開始、以t結束的中間部分,使用非貪婪模式匹配。用圓符號將要返回的tokens數據包括起來,如需對tokens命名則使用格式(?<token名稱>expr)。

例56:將字符串用分隔符′′進行分隔。注意在正則表達式中′′表示邏輯或,所以需要利用′\′對′|′進行轉義。

例57:將字符串中的′′替換為′.′,
>>newStr=regexprep(str,′\′,′\.′)
newStr=
a.b.c.d
1.5.7 實例11:利用符號變量求解方程
不需要預先為其賦值的變量稱為符號變量,符號變量以syms函數創建。
例58:利用符號變量求解一元二次方程。
>>syms a b c x
>>f(x)=a?x^2+b?x+c
f(x)=
a?x^2+b?x+c
>>solve(f(x)==0,x)
ans=
-(b+(b^2-4?a?c)^(1/2))/(2?a)
-(b-(b^2-4?a?c)^(1/2))/(2?a)
當然,可以賦具體的值給a、b和c。
>>G(a,b,c)=solve(f(x)==0,x);
>>ANS=G(1,-2,1)
ANS=
1
1
>>class(ANS)
ans=
sym
ANS的類型為sym,如果需要進一步計算可以將其轉為數值類型,如:
>>double(ANS);
>>single(ANS);
>>int8(ANS);
1.5.8 實例12:函數句柄的應用
函數句柄是一種間接調用函數的方式,通過@符號定義函數句柄。
對于已經定義的函數句柄fun(x1,…,xN)可以通過feval函數來估計函數值,語法:
[y1,…,yM]=feval(fun,x1,…,xN)
例59:利用@符號定義兩個數字相加的函數句柄。
