李曉偉,王益民,肖二鋼,張皓楠
矩陣實驗室(Matlab)是一套高性能的數值計算和可視化軟件,其中大量的工具箱可以方便地實現各種數據的分析算法,便于醫學工作者掌握。下面針對Matlab數據分析功能在中成藥配置中的應用作介紹。
1.1 向量及矩陣的生成 在Matlab中,向量可視作是特殊的矩陣,n維行向量是1行n列的矩陣,n維列向量是n行1列的矩陣。因此,向量的輸入方法與矩陣相同,但行向量要轉置為列向量參加運算。
在Matlab中輸入矩陣需要遵循以下基本規則:1)整個輸入矩陣必須包含在方括號“[]”中。2)在矩陣中,采用分號或回車表明每一行的結束。3)矩陣每一行的元素必須用空格或逗號分開[1]。
1.2 向量和矩陣的運算

1.3 向量組的線性相關性 向量之間,除了運算關系外,還有向量組的線性相關和線性無關。
1.3.1 線性組合 對于向量 a,a1,a2,…,am,如果有一組數 k1,k2,…,km,使得

則稱向量a是a1,a2,…,am的線性組合。
1.3.2 線性相關 設a1,a2,…,am為n維向量組,則這m個向量線性相關的充分必要條件是其中至少一個向量可以用其余向量線性表示。
1.3.3 極大線性無關組 設有一組n維向量,如果這一組向量中存在一組向量 a1,a2,…,ar滿足:1)a1,a2,…,ar線性無關。2)在原來的那一組向量中任取一個向量 a 加進去,則 a1,a2,…,ar,a 線性相關;那么稱a1,a2,…,ar是這一組向量的一個極大線性無關組,極大線性無關組所含的向量個數r稱為向量組的秩。
1.4 Matlab的數組與矩陣
1.4.1 數組與矩陣的概念 Matlab是“Matrix Laboratory”之意,即矩陣實驗室。Matlab最初是為了解答線性代數的問題而開發的,以矩陣作為基本的運算單元。
數組(Array)是由一組復數排成的長方形陣列。數組是進行數值計算的基本處理單元,一行多列的數組是行向量;一列多行的數組是列向量;數組可以是二維的,也可是三維,甚至是多維的。在Matlab中,大量數值計算是以數組形式進行的,數組的所有運算都是對被運算數組中的每個元素平等執行同樣的操作,矩陣運算是把矩陣整體當做一個量進行運算的。
1.4.2 數組或矩陣元素的標識、訪問與賦值 1)一維數組(行向量)是使用方括號以及在括號內列出以空格或逗號分隔其元素的表。元素是用數組名后方括號內的元素在數組中位置的順序號來標識的,數組元素的訪問與賦值就是根據數組元素的標識進行的。例如在Matlab命令窗口中輸入:>>X=[1*pi 2*pi 3*pi 4*pi 5*pi],回車得到:X=3.14 6.28 9.42 12.56 15.70。2)多維數組或矩陣元素的標識,即多維數組元素定位地址。其元素標識通用雙下標。例如:A(m,n)[2]。
中國的中藥產業飛速發展,但在現階段的中成藥生產中對各組分相關度研究甚少。應用Matlab自身攜帶的數據分析功能,通過對實際中成藥配置中的數據進行相關性分析,在已知矩陣基礎上找到其中具有關聯性的數組,對比實際生產確定參數,對中成藥制藥業的發展具有實際意義。
利用Matlab軟件中的數據分析工具分析實際生產過程中的大量數據,從相關性、變異性等多個方面通過具體數據和圖形方式顯示分析結果,從而起到指導中藥生產的作用。可以用Matlab對中成藥復方配伍中的關聯數據進行相關性分析,相關性分析是用來揭示事物之間的關聯性,中成藥是由多個單味藥組成并受多種因素影響的過程,所以在配置新藥的時候應多方考慮,這時就可借助相關性分析來得到客觀合理的結果。
用相關性分析作定量的研究方法:1)Pearson積差相關系數,是計算兩個變量線性相關的系數,用r或rxy示,其作用是考察的兩個變量x與y組成的二維隨機向量(X,Y)的樣本相關系數。X與Y存在線性相關程度越小,r=0,可以認為X與Y不相關(不存在線性相關),但不等于X與Y相立,X與Y之間可能存在其他形式的相關關系。在-r-≠0時,若r>0,可認為X與Y正相關;若r<0可認為X與Y負相關。2)Kendall(肯德爾)和諧系數,是計算多個等級變量相關程度的一種相關量,適用于數據資料是多列相關的等級資料,既可以是k個評分者評n個對象,也可以是同一個人先后k次評n個對象。通過求得Kendall和諧系數,可以較為客觀地選擇好的產品。3)Spearman秩相關系數,又稱等級相關系數,或順序相關系數,是將兩要素的樣本值按數據的大小順序排列位次,以各要素樣本值的位次代替實際數據而求得的一種統計量。
Matlab以數組和矩陣為基礎,具有豐富的庫函數,是集通用科學計算、繪圖及程序設計于一體的高效科學計算軟件,在環境中集成了優化計算、數理統計等工具箱,其強大的功能和運用的靈活,適合中成藥配置中的數據分析。
某中藥廠用8種中草藥(A-H),根據不同的比例配制成了7種中成藥,各用量成分見表1。

表1 中成藥配置成分表g
某醫院要購買這7種特效藥,但藥廠的第3號藥和第6號藥已經賣完,請問能否用其他特效藥配制出這兩種脫銷的藥品?
在Matlab窗口輸入

計算結果為

因為初等行變換不改變列向量的線性相關性和線性表示的系數,所以從最簡行階矩陣U0中可以看出,向量組線性相關,一個最大無關組為u1,u2,u4,u5,u7,u3=u1+2u2,u6=3u2+u4+u5故可以配制新藥。
現在該醫院想用這8種草藥配制2種新的特效藥,表2給出了2種新的特效藥的成分,請問能否配制?如何配制?

表2 特效藥配置成分表g
兩種新藥用v1,v2表示,問題化為v1,v2能否由u1-u7線性表示,若能表示,則可配制;否則,不能配制。
在Matlab窗口輸入


計算結果為

從最簡行階矩陣U0可以看出,向量組線性相關,一個最大無關組為 u1,u2,u4,u5,u7,v1=u1+3u2+2u4,v2=3u1+4u2+2u4+u7,故可以配制新藥。
應用計算機技術進行中藥生產的數據分析,是目前計算機應用的重要領域。在中藥生產的數據分析領域內,國內做的研究正處于起步階段,Matlab的數據分析功能是十分強大的,將Matlab應用到中藥生產數據分析領域將對生產起到重要的指導作用。
[1]張德豐.Matlab數值計算方法[M].北京:機械工業出版社,2010:1-37.
[2]周仁郁.線性代數[M].北京:中國中醫藥出版社,2006:58-66.