語言的混合編程方式_第1頁
語言的混合編程方式_第2頁
語言的混合編程方式_第3頁
語言的混合編程方式_第4頁
語言的混合編程方式_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、3.1  MATLAB與Visual Basic語言的混合編程方式MATLAB提供了與C/C+、Fortran語言的接口,但沒有與Vsiual Basic語言的接口,要想實現(xiàn)MATLAB與Visual Basic的混合編程可以通過以下途徑來實現(xiàn)。1通過ActiveX方式一是用Visual Basic開發(fā)服務器ActiveX組件,MATLAB作為客戶端程序使用,事實上無論是用VB還是VC或者其他語言環(huán)境開發(fā)的ActiveX組件,對于MATLAB來說集成與調(diào)用方式是一樣的,一般情況下很容易地將不同環(huán)境下開發(fā)的用途各異的ActiveX對象集成到一個MATLAB應用中來。其使用方法見第5章關

2、于MATLAB作為ActiveX的客戶端使用方法。二是在VB環(huán)境下可以通過ActiveX自動化接口將MATLAB作為Visual Basic語言的一個ActiveX部件調(diào)用。MATLAB ActiveX自動化服務的功能主要包括在MATLAB工作空間執(zhí)行MATLAB命令,以及直接從工作空間存取矩陣等,我們在第5章中關于MATLAB作為服務器組件的部分的例子就是以Visual Basic應用程序,以MATLAB作為服務器客戶端的。2通過動態(tài)鏈接庫方式該種方式是一種間接調(diào)用MATLAB命令的方式,借助于C+與MATLAB的接口,將MATLAB的程序文件(.M文件)編譯為動態(tài)鏈接庫(.DLL),VB在

3、代碼中與調(diào)用其他語言編寫的DLL文件一樣調(diào)用MATLAB中.M 文件生成的動態(tài)鏈接庫。這種方法可以脫離具體的MATLAB環(huán)境,運行效率較高。3通過嵌入VB的矩陣函數(shù)庫MatrixVB的方法MatrixVB是由第三方(mathtools公司)提供的COM組件,包含了大量與MATLAB相似的函數(shù)與調(diào)用語法,可以加強VB內(nèi)建數(shù)學運算與圖形展示功能,在VB程序代碼中可以像使用VB自己的函數(shù)一樣使用MatrixVB的函數(shù),而且可以不依賴于MATLAB的環(huán)境在Visual Basic中完成矩陣運算與圖形繪制顯示等功能,這種方法使用起來簡單,編程效率較高。MatrixVB函數(shù)庫的功能大致可分為8大類(矩陣運

4、算、運算符重載、圖形圖像處理、最優(yōu)化運算、多項式、信號處理、隨機與統(tǒng)計分析、控制系統(tǒng))。除以上3種方式外,我們還可以通過DDE的方式實現(xiàn)VB與MATLAB的數(shù)據(jù)通信。3.2  MatrixVB 環(huán)境設置  在VB應用中引入MatrixVB1安裝MatrixVB(1) 系統(tǒng)要求為:     硬盤空間8.8M以上;     操作系統(tǒng)要求Windows 95及其以上版本,或者Windows NT 4.0及其以上版本。(2) 在安裝盤上找到Matrixvb4510.exe,雙擊后啟動安裝程序,并按照安裝

5、向導安裝。(3) 然后在“開始運行”菜單中用命令regsvr32 mMatrix.dll注冊,如圖7-1所示。圖7-1  注冊 MatrixVb2建立EXE項目(1) 啟動VB開發(fā)環(huán)境并建立“標準 EXE”項目,如圖7-2所示。圖7-2  選擇標準EXE工程模板(2) 單擊“打開”按鈕,所建立的項目及開發(fā)界面如圖7-3所示。圖7-3  VB項目及開發(fā)界面3. 為項目引入MatrixVB在project下拉菜單中單擊References,在彈出的對話框中選中MMatrix項目,系統(tǒng)將加載MatrixVB的動態(tài)鏈接庫MMatrix.DLL,如圖7-4所示。圖7-4&#

6、160; 引入MatrixVB的動態(tài)鏈接庫  在VB中使用MatrixVB的命令與函數(shù)1采用立即窗口的形式在項目中引入MatrixVB庫后,在VB中可以直接在開發(fā)環(huán)境的“立即窗口”中輸入MATLAB命令,讓VB編譯器立即執(zhí)行,如在MATLAB主窗口中一樣。在View下拉菜單的中選擇Immediate Windows選項在開發(fā)環(huán)境中得到“立即窗口”,如圖7-5所示。圖7-5  VB中的立即窗口例如,在“立即窗口”中輸入如下命令:      A=eye(4,4)A.show命令將產(chǎn)生一個4行4列的單位矩陣,并在MatrixVB的

7、觀察窗口Matrix Viewer中顯示結果,如圖7-6所示。圖7-6  在VB立即窗口中產(chǎn)生矩陣或者,在“立即窗口”中輸入命令:     mesh(peaks(3)將在MatrixVB的圖形窗口Figure1中繪制并顯示一個曲面網(wǎng)線圖,如圖7-7所示。圖7-7  通過立即窗口繪制曲面圖2在VB程序代碼中使用可以將MatrixVB的函數(shù)與命令調(diào)用嵌入到VB程序代碼中實現(xiàn)相應的功能,其函數(shù)與命令的使用方式類似于在MATLAB環(huán)境中的使用方式。例如,我們可以將上例中的功能在VB代碼中實現(xiàn),步驟為:(1) 在上例的主窗口中增加一個按鈕,如圖

8、7-8所示。圖7-8  為窗口Form1增加按鈕(2) 在按鈕的Click事件處理過程中產(chǎn)生一個4行4列單位矩陣并顯示,代碼如下:Private Sub Command1_Click()A = eye(4, 4)A.ShowEnd Sub單擊命令按鈕運行程序,運行結果如圖7-9所示。圖7-9  VB代碼中用MatrixVB產(chǎn)生矩陣同樣,在代碼中也可以嵌入MatrixVB繪制圖形的函數(shù)與命令,將該例按鈕的Click事件處理過程中的代碼進行如下修改。    Private Sub Command1_Click()  mesh(peaks(

9、30)End Sub運行結果如圖7-10所示。圖7-10  通過嵌入MatrixVB命令繪圖在發(fā)布基于MatrixVB的VB應用程序時,應將相應的庫文件隨系統(tǒng)一起發(fā)布。這些文件包括:v4510v.dll、c4510v.dll、ago4510.dll、msvcrt.dll、msvcirt.dll和MMatrix.dll。由于MMatrix.dll是COM 服務器,所以必須在操作系統(tǒng)中注冊后方可使用,注冊時可使用如下命令行語句:regsvr32 mMatrix.dll如果目標操作系統(tǒng)是Windows 95,還必須發(fā)布另外兩個OpenGL文件即opengl32.dll與glu32.dll,

10、但在其他操作系統(tǒng)如Windows 98/Me/NT 4/2000等環(huán)境下,則不需要安裝這些文件。2.3  MatrixVB 的矩陣操作矩陣是表示一組數(shù)據(jù)關系的組合,在MatrixVB中包含了許多矩陣分析函數(shù),為了在VB中直接應用MatrixVB這些高效的計算方法,一般將VB中的數(shù)組當成矩陣進行處理,需要說明的是與matricVB矩陣元素相關的運算在VB中對應的數(shù)據(jù)類型一般為double類型。  在VB中生成MatrixVB矩陣可以像在MATLAB命令窗口中那樣,直接在VB中定義MATLAB矩陣變量;也可以使用VB的VARIANT通用型變量表示矩陣,其定義的方法如下:Dim

11、x As Variant一般在VB中產(chǎn)生MatrixVB的方法主要有以下幾種:1通過函數(shù)mabs轉化為MatrixVB的矩陣將VB中定義的數(shù)組通過函數(shù)mabs轉化為MatrixVB的矩陣,格式為:MATRIXVB_MATRIX=mabs(VB_ARRAY)MATRIXVB_MATRIX為MatrixVB的矩陣名稱,如同在MATLAB窗口中那樣,不需要事先定義,VB_ARRAY是VB程序中定義的數(shù)組,也可以是單獨的VB常量與變量。修改圖7-8中command按鈕的Click事件的處理過程代碼為:Private Sub Command1_Click()Dim A(1to 3,1to 3) 

12、; As doubleDim i,j As integerfor i=1 To 3for j=1 To 3A(i,j)=CDbl(i+j)NextNextB=mabs(A)A. showEnd Sub       該段代碼首先定義了一個二維VB數(shù)組A,然后將其賦值,通過mabs函數(shù)轉化為MatrixVB矩陣B并將其顯示出來。運行程序并單擊該按鈕,運行的結果如圖7-11所示。圖7-11  通過函數(shù)mabs產(chǎn)生的MatrixVB矩陣2通過MatrixVB函數(shù)生成矩陣可以使用MatrixVB中的特殊函數(shù)(如zeros()

13、、ones()、magic()等)直接生成矩陣。如在VB程序代碼中直接嵌入語句:A=zeros(3,4)A.show結果將產(chǎn)生一個3行4列元素都為0的矩陣并將其顯示出來。在應用程序中我們也可以先定義變量,然后再賦值產(chǎn)生矩陣。產(chǎn)生矩陣VB支持的兩種類型為Matrix與Variant的如下語句,都將產(chǎn)生一個3×4的0矩陣。Dim mat As MatrixDim x As VariantSet mat=zeros(3,4)               '

14、;賦值為3×4的0矩陣Set x=zeros(3,4)              '賦值為3×4的0矩陣3通過函數(shù) CreateMatrix通過函數(shù)CreateMatrix創(chuàng)建的矩陣可以在創(chuàng)建過程中直接賦值,格式為:        CreateMatrix(p1 , p2 , pn ,)    p1 , p2 , pn 為矩陣的值。函數(shù)Reshape

15、用來設置由函數(shù)CreateMatrix所創(chuàng)建的函數(shù)的維數(shù),格式為:    Reshap(X,rows,cols)X為由CreateMatrix創(chuàng)建的矩陣,rows為指定的行數(shù),cols為指定的列數(shù),如下例所示:      A=CreateMatrix(1,2,3,4,5,6,7,8,9)      Reshap(A,3,3)      A.Show創(chuàng)建一個矩陣,并將其指定為3行3列,結果如圖7-12所示。 

16、 圖7-12  由CreateMatrix 產(chǎn)生的MatrixVB矩陣2.3.2  對矩陣元素進行操作1矩陣元素的存取及與VB的數(shù)據(jù)轉換(1) 通過圓括號方式訪問MatrixVB矩陣,但是這種方式只能對矩陣元素進行寫操作,其格式如同訪問VB的數(shù)組元素一樣,例如:A是一個二維矩陣則下列代碼:A(i,j)=2.0可以將矩陣的第i行第j列賦值為1。(2) MatrixVB矩陣屬性rN、iN可以以讀寫的形式訪問矩陣X中的每個元素的實部和虛部,其中N表示矩陣的維數(shù),例如,對于一維MatrixVB矩陣AA.r1(i)=12'寫操作a=A.r1(i+1) '讀操

17、作將矩陣A的第i個元素賦值為12,將第i+1個元素賦值給VB中的變量a。再如,對于二維矩陣BB.r2(i,j)=12       a=B.r2(i,j)將矩陣B的第i行j列元素賦值為12,將矩陣B的第i行第j列元素賦值給VB中的變量a,要通過iN的方式來訪問。(3) X.simple可以將MatrixVB矩陣X轉換為VB中的數(shù)據(jù)類型。在X為只有一個元素的矩陣情況下,若X為一個實數(shù)則將值轉換為VB中的Double類型,如:Dim S As DoubleA=CreateMatrix(1.0)S=A.simple若X為一個字符的單元素矩陣,

18、則X.simple返回一個VB中的字符串類型;若X為由多個元素的一維或者多維矩陣,則該表達式將返回一個矩陣,但不能自動轉換為VB中相應的一維或者多維數(shù)組。2矩陣的顯示屬性show具有打開Matrix viwer窗口顯示矩陣內(nèi)容的功能,格式為:X.Show3獲得矩陣的行、列、維數(shù)利用函數(shù)rows()、cols()、dims()、dimension(n)返回矩陣的行數(shù)、列數(shù)、維數(shù)及第n維數(shù)的個數(shù)屬性,與這些屬性相關的VB中的數(shù)據(jù)類型一般為integer類型,如,對于二維矩陣A,下面的代碼將得到矩陣的函數(shù)與列數(shù),并將其賦值給VB中的變量。   a=A.rows()'

19、60;          獲得矩陣的行數(shù)     b=A.cols()'            獲得矩陣的列數(shù)     c=dims()'              獲得矩陣的維數(shù)   

20、;  d=dimension(1) '       第一維的個數(shù)例如,在VB程序中產(chǎn)生一個MatrixVB矩陣并修改其元素的值,獲得其屬性并輸出,修改圖7-8中command按鈕的Click事件的處理過程。代碼為:Private Sub Command1_Click()'定義變量用于接收MatrixVB中矩陣元素的值或屬性值Dim xr As doubleDim xi As doubleDim i As integerDim row As integerDim col As integerDim dims A

21、s integerA=zeros(3) '產(chǎn)生一個3行3列的零矩陣'給矩陣賦值for i=1 To 3 for j=1 To 3A(i,j)=CDbl(i+j)NextNextA.show'顯示矩陣xr=A.r2(2,2) '獲得矩陣2行2列的值    row=A.rows()'獲得行數(shù)    col=A.col()'獲得列數(shù)dims=A.dims()'獲得維數(shù)'輸出屬性Print "行數(shù)為:";Print  row;Print &

22、quot;列數(shù)為:";Print  col;Print "維數(shù)為:";Print  col;    End Sub運行程序并單擊command1按鈕,結果如圖7-13和7-14所示。圖7-13  顯示矩陣圖7-14  顯示矩陣元素的值及屬性  矩陣的保存與載入使用vbsave命令將矩陣寫入磁盤文件中,并將數(shù)據(jù)文件中保存的文件讀到程序中。語法格式分別為:vbsave filename variablevbload(filename)例如以下代碼將產(chǎn)生的魔方矩陣A保存到文件magic.tx

23、t中,并讀到B中A=magic(3)vbsave "magic.txt"   AB=vbload("magic.txt")也可以使用MatrixVB提供的與C語言語法格式相似的函數(shù)來對特定格式的文件進行讀寫,把矩陣所有的元素都輸出為一列,數(shù)據(jù)文件只能用Dos方式打開,如:Dim fid As VariantDim A As VariantDim B As VariantA = magic(4)fid = fopen("one.txt", "w")Call fprintf(fid, "%

24、gn", A)Call fscanf(fid, "%gn", B)fclose (fid)2.3.4  應用舉例我們下面考慮將第5章中的計算器用MatrixVB來實現(xiàn),并增加矩陣的行列式運算,LU分解。(1) 建立一個工程,工程名為Project1,工程類型為Standard EXE,如圖7-15所示。圖7-15  新建VB工程(2) 按照7.2節(jié)步驟創(chuàng)建工程并設置環(huán)境。(3) 在主窗口上添加若干控件,如圖7-16所示。圖7-16  應用主界面各控件的類型、名稱、標題及作用如表7-1所示:表7-1  主窗口控件控 件 類 型

25、控 件 名 稱標    題作    用LabelLabel1Label1顯示正在輸入的行、列TextBoxText1接受輸入數(shù)據(jù)ComboBoxComb1選擇運算選擇運算類型CommandButtonCommand1計算執(zhí)行運算命令CommandButtonCommand2下一個切換下一條數(shù)據(jù)輸入CommandButtonCommand3關閉關閉主窗口CommandButtonCommand4重置清除主窗口中的打印內(nèi)容          

26、;            (4) 聲明模塊級的變量。'定義保存原始數(shù)據(jù)的矩陣及表示當前行列的變量Dim mat As VariantDim i As IntegerDim j As Integer(5) 為主窗口Form的Load事件編寫代碼。 Private Sub Form_Load() Set mat = zeros(4, 4) '產(chǎn)生一個4×4的零矩陣 '向組合框增加計算選項字符串Combo1.AddIt

27、em "轉置"Combo1.AddItem "逆矩陣"Combo1.AddItem "特征值"Combo1.AddItem "LU分解"Combo1.AddItem "SVD分解"Combo1.AddItem "行列式"i = 1j = 1End Sub(6) 為Command2的Click事件處理過程編寫代碼。Private Sub Command2_Click()Dim row As IntegerDim col As IntegerDim temp As Double&

28、#160;Label1.Caption = "當前行,列為" & CStr(i) & ",  " & CStr(j) mat(i, j) = CDbl(Text1.Text) '接收文本框中輸入的數(shù)據(jù)到mat中   temp = CDbl(Text1.Text)   Print temp; '將當前輸入的數(shù)據(jù)輸出   '設置輸出的行,列值,當行數(shù)大于4時輸出結束   If j Mod 4 = 0 Then&#

29、160;  i = i + 1   j = 1   Print   Else   j = j + 1   End If   Text1.Text = "0"   If i = 4 Then   i = 1 j = 1   Text1.Text = "" MsgBox "輸入已經(jīng)結束"   Command2.E

30、nabled = False Exit Sub  End IfEnd Sub(7) 為Command1的Click事件編寫代碼。'判斷計算類型然后對mat矩陣進行相應的操作并將結果輸出Private Sub Command1_Click() If Combo1.Text = "轉置" Then A = transpose(mat) A.ShowElseIf Combo1.Text = "逆矩陣" Then B = inv(mat) B.ShowElseIf Combo1.Tex

31、t = "特征值" ThenC = eig(mat)v = C(1) 'C(1)為特征值向量,C(2)為主對角線為特征值的方陣v.ShowElseIf Combo1.Text = "LU分解" ThenD = lu(mat)l = D(1) 'D(1)為下三角矩陣,D(2)為上三角矩陣,D(3)為交換矩陣l.ShowElseIf Combo1.Text = "SVD分解" ThenE = svd(mat) 'E2為對角線為奇異值的矩陣,E1,E3為正交矩陣v = E(1)v.ShowElseIf Combo1.

32、Text = "行列式" ThenF = det(mat)Print F.Simple '將行列式的值輸出到窗口上End IfEnd Sub(8) 為Command 4的Click事件處理過程編寫代碼。i = 1j = 1Form1.ClsIf Command2.Enabled = False Then    Command2.Enabled = TrueEnd If此外讀者可以嘗試進行編程求矩陣的范數(shù),秩等運算。說明:(1) 與通過ActiveX自動化服務器方式相比,采用MatrixVB使得代碼簡練,它不需要在不同的環(huán)境中交換數(shù)據(jù),也

33、不必啟動MATLAB的環(huán)境即可得到運算的結果。(2) 有些矩陣運算函數(shù)可以返回若干個矩陣,如LU分解等,一般可以通過X(n)方式來區(qū)分。(3) 有些針對一個二維矩陣的運算返回的是一個一維向量或單獨的值,如矩陣的特征值或行列式值、范數(shù)等。3.4  MatrixVB的運算符VB不支持運算符的重載,例如“+”只能用于標量的加法運算,但在MatrixVB組件包中提供了一組函數(shù)用于擴展VB本身的運算符的適用范圍,這些函數(shù)不僅能對MatrixVB矩陣進行算術運算,而且可以對VB支持的數(shù)據(jù)類型進行相同的運算,或者進行二者的混合運算。因此這些函數(shù)相當于擴展了VB運算符的范圍。可以像使用MatrixV

34、B組件包中其他函數(shù)一樣對這些函數(shù)進行調(diào)用。我們可以將MatrixVB運算符函數(shù)分為算術運算符函數(shù)、關系運算符函數(shù)和邏輯運算符函數(shù)等。值得注意的是,雖然MatrixVB的這一組函數(shù)可以用于VB的某些數(shù)據(jù)類型的變量或常量,但VB的運算符卻不能用于MatrixVB矩陣。  算術運算符矩陣的算術運算符及與VB對應的運算符如表7-2所示。表 7-2  MatrixVB的算術運算符函數(shù)及與VB相關運算符的對應關系Visual BasicMatrixVBMatrixVB運算函數(shù)說明ab    power(a,b)a的b次方a*b 

35、0;    times(a,b)a乘ba/b     rdivide(a,b)a右除bab     ldivide(a,b)a左除ba Mod bmmod(a,b)a對b求余a+b    plus(a,b)a加ba-b    minus(a,b)a減b-a     uminus(a)取a的每一個元素的相反數(shù)說明:(1) a和b可

36、以都為VB所支持的整型,浮點型變量或者常量,運算的結果為MatrixVB標量矩陣,此時與VB的運算符所起的作用是一樣的,如:Dim x As DoubleDim y As integerx=4.0y = 2C = power(x, y)C.Show運算的結果為16,如圖7-17所示。圖7-17  4.0的2次方(2) a與b都為MatrixVB矩陣,此時二者的維數(shù)、大小均要一致,所做的運算為二個矩陣對應元素的運算,如:A = CreateMatrix(1, 2, 3, 4, 5, 6, 7, 8, 9)B = CreateMatrix(2, 2, 2, 3, 3, 3, 4, 4,

37、4)A = reshape(A, 3, 3)B = reshape(B, 3, 3)C = power(A, B)C.Show結果將產(chǎn)生一個矩陣C,其中任一元素C(i,j)的值為A矩陣對應元素A(j,i)的B(j,i)次方,計算結果如圖7-18所示。圖7-18  矩陣A的B次方(3) a與b中一個為MatrixVB矩陣,一個為VB中的數(shù)據(jù)類型(整型,浮點型)的標量,所做的運算為該標量對矩陣每個元素的算術運算,如:A = CreateMatrix(1, 2, 3, 4, 5, 6, 7, 8, 9)A = reshape(A, 3, 3)B = power(A, 2)B.Show結果產(chǎn)

38、生一個每一個元素為矩陣A對應元素值2次方的矩陣,如圖7-19所示。圖7-19  矩陣的2次方  關系運算符矩陣的關系運算符及與VB對應的運算符如表7-3所示。表7-3  MatrixVB的關系運算符函數(shù)及與VB相關運算符的對應關系Visual BasicMatrixVBMatrixVB運算函數(shù)說明a<blt(a,b)a若小于b則結果為真否則為假a<=ble(a,b)a若小于等于b則結果為真否則為假a>bgt(a,b)a若大于b則結果為真否則為假a>=bge(a,b)a若大于等于b則結果為真否則為假a=beq(a,b)a若等于b則結果為真否則

39、為假a<>bne(a,b)a若不等于b則結果為真否則為假說明:a 和b可以都為VB所支持的整型、浮點型變量或者常量,此時與VB的運算符所起的作用是一樣的,如:(1) 如果a,b都為VB所支持的類型,運算的結果為MatrixVB標量矩陣,其中的值為0或1,如:Dim x As integerDim y As integerx=1y=2C = ge(x, y)   C.show   結果如圖7-20所示。圖7-20  VB類型的比較運算(2) a與b都為MatrixVB矩陣,此時二者的維數(shù),大小均要一致,所做的運算為兩個矩陣對應元素的運

40、算,運算結果為由1,0構成的矩陣,如:A = CreateMatrix(1, 2, 3, 4, 5, 6, 7, 8, 9)B = CreateMatrix(2, 2, 2, 3, 3, 3, 4, 4, 4)A = reshape(A, 3, 3)B = reshape(B, 3, 3)C = ge(A, B)C.Show   結果如圖7-21所示。  圖7-21  矩陣的比較運算(3) a與b中一個為matricVB矩陣,一個為VB中的數(shù)據(jù)類型(整型,浮點型)的標量,所做的運算為該標量對矩陣每個元素的邏輯運算,如:A = CreateMat

41、rix(1, 2, 3, 4, 5, 6, 7, 8, 9)A = reshape(A, 3, 3)B = ge(A, 5)B.Show運算結果如圖7-22所示。圖7-22  矩陣與標量的比較運算  邏輯運算符矩陣的邏輯運算符及與VB對應的運算符如表7-4所示。表7-4  MatrixVB的邏輯運算符函數(shù)及與VB相關運算符的對應關系Visual BasicMatrixVBMatrixVB運算函數(shù)說明a  And  b     mand(a,b)a與b做與運算a  Eqv  b

42、     mnot(mxor(a),b當a與b同時為真或假時結果為真,否則為假a  Imp  b      mor(mnot(a),b)a為真b為假時結果為假,否則為真not a        mnot(a)a做非運算a Or b     mor(a,b)a與b做或運算a Xor bmxor(a,b)a與b做異或運算有關矩陣邏輯運算符的數(shù)

43、據(jù)類型說明與關系運算符相同,所得到的結果值為由0,1構成的矩陣或標量。  一些常用的運算函數(shù)在前幾節(jié)中我們介紹了矩陣的操作及與VB運算符有對應關系的運算符函數(shù),其中包含了一些矩陣進行運算的函數(shù)。除此之外,MatrixVB還提供了大量運算函數(shù),本節(jié)我們將介紹幾個常用的運算符函數(shù),如表7-5所示。表7-5  MatrixVB的一些其他運算符函數(shù)函  數(shù)  名函 數(shù) 說 明Colon(a,b,c) 產(chǎn)生一個從a到c步長為b的序列Primes(n)產(chǎn)生小于n的素數(shù)序列Rand(n)產(chǎn)生一個個數(shù)為n的隨機序列Logspace(a,b,n)產(chǎn)生一個個數(shù)為n

44、的對數(shù)序列vbfilter(a,b,c)FIR濾波函數(shù),a,b為濾波器系數(shù)矩陣,c為一個數(shù)據(jù)向量fft(a)快速傅立葉變換,a為一個輸入序列Roots(a)用來求多項式的根,a為輸入的矩陣Mldivide(a,b)解線性方程組,a為系數(shù)矩陣,b為方程組等號右邊的向量Strcat(a,b)連接兩個矩陣       例:給定一個線性方程組:     代碼為:A = CreateMatrix(2, 11, 7, 3, -4, 5, 1, 8, -8)B = CreateMatrix(2, 6

45、, 9)A = reshape(A, 3, 3)B = reshape(B, 3, 1)C = mldivide(A, B)D=strcat(A,B)E=vertcat(C,D)D.Show運行的結果如圖7-23所示。圖7-23  求方程組的解最后一列為方程組的解向量。此外還有很多運算函數(shù)請參考幫助文檔refguide.pdf,這里不一一介紹了。3.5  圖形圖像處理 MatrixVB組件包提供了一整套用于二維或三維作圖的函數(shù)、顏色處理函數(shù)、圖像處理函數(shù)、圖像句柄處理函數(shù)及用戶界面對話框等工具。mattrixVB同時支持在figuer窗口及VB窗口中繪制圖形與圖像處理。本節(jié)將介紹如何使用這些函數(shù)和工具來為VB程序創(chuàng)建和處理圖形。  在figure窗口中繪制圖形在MatrixVB組件包中包含了用于生成圓餅圖、直方圖、頻率圖、等高線圖、極坐標圖和散點圖等函數(shù),可以基本滿足圖形繪制應用需求,同時也提供了能讀取多種格式圖像的處理函數(shù)。借助這些函數(shù)及數(shù)學運算函數(shù)、顏色處理函數(shù),可以方便地作

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論