- MATLAB量化金融分析基礎(chǔ)與實戰(zhàn)
- 馬萌
- 1203字
- 2020-05-28 17:52:06
1.7 cell
MATLAB中的cell類型(元胞數(shù)組)是一個承載其他數(shù)據(jù)類型的容器,它可以包含任何MATLAB類型的數(shù)據(jù),如數(shù)值、字符和句柄等,甚至其他cell數(shù)據(jù)。使用cell類型可以輕松實現(xiàn)復(fù)雜數(shù)據(jù)的嵌套。
1.7.1 實例15:兩種常見的cell賦值方式
例64:創(chuàng)建空cell。

例65:對上例C中的每個元素依次賦值。
賦值通常有兩種方式:第一種,等式左側(cè)用圓括號取cell元素并將等式右側(cè)的cell數(shù)據(jù)賦給左側(cè);第二種,等式左側(cè)用花括號取cell的元素值并將等式右側(cè)的數(shù)據(jù)值賦給左側(cè)。

繼續(xù)對C(2,2)中的2×2空cell賦值:用花括號先取得C{2,2}中的值2×2 cell之后,用“(1)”取出第一個子cell并用等號賦值為cell數(shù)據(jù){′a′}。
>>C{2,2}(1)={′a′};
或者可采取第二種賦值方式:用花括號先取得C{2,2}中的值2×2 cell之后,用“{1}”取出第一個cell的值將此值賦為′a′。
>>C{2,2}{1}=′a′;
tips:取cell元素用圓括號,取cell中元素的值用花括號。雙擊【工作區(qū)】的變量以打開變量編輯器查看或修改變量,如圖1-2所示。

圖1-2 通過變量編輯器查看cell元素
1.7.2 實例16:mat2cell函數(shù)與num2cell函數(shù)
mat2cell函數(shù)可以將矩陣元素分塊放置到cell中。
語法:
C=mat2cell(A,dim1Dist,…,dimNDist)
其中dim1Dist,…,dimNDist為向量,包含分隔的每個子cell在當(dāng)前維度1,…,N下的長度。>>CM=ones(5,4);
>>C=mat2cell(CM,[2,3],[2,2])
C=
[2x2 double] [2x2 double]
[3x2 double] [3x2 double]
變量C的拆分結(jié)構(gòu)如圖1-3所示。

圖1-3 矩陣轉(zhuǎn)cell的結(jié)構(gòu)拆分示意圖
例66:num2cell函數(shù)可將矩陣中每個元素放置到一個cell中。
>>D=num2cell(CM)
1.7.3 實例17:cellstr函數(shù)
例67:cellstr函數(shù)可以將字符矩陣行中最后的空白字符刪除。

例68:cellstr函數(shù)可將字符矩陣放到cell列向量中。

1.7.4 實例18:cell2mat函數(shù)
cell2mat函數(shù)可以將任意形狀的數(shù)值cell轉(zhuǎn)換為矩陣。
例69:將cell類型C轉(zhuǎn)換回矩陣。
>>cell2mat(C)
數(shù)據(jù)的結(jié)構(gòu)變化如圖1-4所示。

圖1-4 cell轉(zhuǎn)數(shù)字矩陣的結(jié)構(gòu)示意圖
例70:將包含字符串的cell轉(zhuǎn)為數(shù)值數(shù)組。
>>str2double({′1′,′2′;′1′,′2′})
ans=
1 2
1 2
1.7.5 實例19:用cellfun函數(shù)做cell元素遍歷運算
利用cellfun函數(shù)可以遍歷cell中的各個元素來進(jìn)行函數(shù)運算。
語法:
cellfun(@fun,input)
例71:求cell中各元素的平均值。

tips:cellfun(@fun,input)中的fun函數(shù)句柄不僅限于系統(tǒng)內(nèi)置函數(shù),也可以使用自定義函數(shù)。
語法:
cellfun(@(x1,…,xN)fun,input1,…,inputN)
例72:求cell中元素的平均值。

例73:求2個cell中元素的和。

注意到輸出的OUT中第一個cell元素為1×3矩陣,第二個cell元素為3×1矩陣,第三個cell元素為空。三個cell的尺寸不同,需要將′UniformOutput′參數(shù)設(shè)置為false。
例74:將cell中元素′a′替換為′b′。

tips:′UniformOutput′參數(shù)設(shè)置為false時返回cell類型,否則返回矩陣類型。
例75:判斷股票屬于上證(60開頭)還是深證A股(00或30開頭)并輸出。

1.7.6 實例20:用findgroups函數(shù)和splitapply函數(shù)做cell分組運算
findgroups函數(shù)可以將cell按照指定列值進(jìn)行分組;splitapply則可以對分組進(jìn)行函數(shù)運算。
例76:計算分組均值。

findgroups函數(shù)也支持?jǐn)?shù)值行或列向量的分組,如:
>>findgroups([1;1;2;2;2])
>>findgroups([1,1,2,2,2])
findgroups函數(shù)不支持字符格式的行或列向量,如findgroups([′a′;′a′;′b′])會報錯,需要使用cellstr函數(shù)將輸入轉(zhuǎn)換為cell。
>>findgroups(cellstr([′a′;′a′;′b′]))
- 互聯(lián)網(wǎng)金融經(jīng)營管理之道
- 當(dāng)音樂停止之后
- 債券投資實戰(zhàn)2:交易策略、投組管理和績效分析
- 中國農(nóng)戶的借貸與信用擔(dān)保(1930~2010)
- 我們這樣做PPP:政府與社會資本合作(PPP)金準(zhǔn)案例與思考
- 中國資本市場研究報告(2016)股市危機(jī)與政府干預(yù):讓歷史告訴未來
- 全球投資并購:案例與實務(wù)
- 企業(yè)納稅基本技能與全真實訓(xùn)
- 世風(fēng)日上
- 國際金融理論與實務(wù)(第3版)
- 周期真實義2:周期大拐點(濤動周期錄)
- 預(yù)期投資:未來投資機(jī)會分析與估值方法
- 一本書讀懂不良資產(chǎn)
- 社群眾籌:傳統(tǒng)眾籌模式的升級與重構(gòu)
- 國家金融安全:風(fēng)險預(yù)警與邊界構(gòu)建