乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      MATLAB矩陣及其運算

       輕心 2010-05-05

      2  MATLAB矩陣及其運算
      2.1 
      變量和數(shù)據(jù)操作
      2.2  MATLAB
      矩陣
      2.3  MATLAB
      運算
      2.4 
      矩陣分析
      2.5 
      矩陣的超越函數(shù)
      2.6 
      字符串
      2.7 
      結(jié)構(gòu)數(shù)據(jù)和單元數(shù)據(jù)
      2.8 
      稀疏矩陣

      2.1  變量和數(shù) 據(jù)操作

      2.1.1  變量與賦值
      1
      .變量命名
      MATLAB 6.5中,變量名是以字母開 頭,后接字母、數(shù)字或下劃線的字符序列,最多63個字符。在MATLAB中,變量名區(qū)分字母的大小寫。

      2.賦值語句
      (1)
      變量=表達式 
      (2)
      表達式
      其中表達式是用運算符將有關(guān)運算量連接起來的式子,其結(jié)果是一個矩陣。

      2-1  計算表達式的值,并顯示計算結(jié)果。
      MATLAB命令窗口輸入命令:
      x=1+2i;
      y=3-sqrt(17);
      z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))
      其中pii都是MATLAB預(yù)先定義的變量,分別代表代表圓周率π和虛數(shù)單位。
      輸出結(jié)果是:
      z =
         -0.3488 + 0.3286i

          2.1.2  預(yù)定義變量

      MATLAB工作空間中,還駐留幾個由系統(tǒng) 本身定義的變量。例如,用pi表示圓周率π的近似值,用ij表示虛數(shù)單位。
      預(yù)定義變量有特定的含義,在使用時,應(yīng)盡量避免對這些變量重新賦值。

      2.1.3  內(nèi)存變量的管理
      1
      .內(nèi)存變量的刪除與修改
      MATLAB
      工作空間窗口專門用 于內(nèi)存變量的管理。在工作空間窗口中可以顯示所有內(nèi)存變量的屬性。當選中某些變量后,再單擊Delete按鈕,就能刪除這些變量。當選中某些變量后,再單擊Open按鈕,將進入變量編輯器。通過變量編 輯器可以直接觀察變量中的具體元素,也可修改變量中的具體元素。

      clear命令用于刪除MATLAB工作空間中的變量。whowhos這兩個命令用于顯示在MATLAB工作空間中已經(jīng)駐留的變量名清單。who命令只顯示出駐留變量的名稱,whos在給出變量名的同時,還給出它們的大小、所占字節(jié)數(shù)及數(shù)據(jù)類型等信息。

      2.內(nèi)存變量文件
      利用MAT文件可以把當前MATLAB工作空間中的一些有用變量長久地保留下來,擴展名是.mat。MAT文件的生成和裝入由saveload命令來完成。常用格式為:
      save
      文件名 [變量名表]  [-append][-ascii]
      load
      文件名  [變量名表]  [-ascii]

      其中,文件 名可以帶路徑,但不需帶擴展名.mat,命令隱含一定對.mat文件進行操作。變量名表中的變量個數(shù)不限,只要內(nèi)存或文件中存在即可,變量名之間以空格分隔。當變 量名表省略時,保存或裝入全部變量。-ascii選項使文件以ASCII格式處理,省略該選項時文件將以二進制格式處理。save命令中的-append選項控制將變量追加到MAT文件中。

      2.1.4  MATLAB常用數(shù)學函數(shù)
      MATLAB
      提供了許多數(shù)學函 數(shù),函數(shù)的自變量規(guī)定為矩陣變量,運算法則是將函數(shù)逐項作用于矩陣的元素上,因而運算的結(jié)果是一個與自變量同維數(shù)的矩陣。
      函數(shù)使用說明:
      (1)
      三角函數(shù)以弧度為單位計 算。
      (2) abs
      函數(shù)可以求實數(shù)的絕對值、復(fù)數(shù)的模、字符串的ASCII碼值。
      (3)
      用于取整的函數(shù)有fix、floor、ceil、round,要注意它們的區(qū)別。
      (4) rem
      mod函數(shù)的區(qū)別。rem(x,y)mod(x,y)要求x,y必須為相同大小的實矩陣或為標量。

      2.1.5  數(shù)據(jù)的輸出格式
          MATLAB
      用十進制數(shù)表示一個常數(shù),具體可采用日常記數(shù)法和科學記數(shù)法兩種表示方法。
         
      在一般情況下,MATLAB內(nèi)部每一個數(shù)據(jù)元素都是用雙精度數(shù)來表示和存儲的。數(shù)據(jù)輸出時用戶可以用format命令設(shè)置或改變數(shù)據(jù)輸出格式。format命令的格式為:
          format 
      格式符
      其中格式符決定數(shù)據(jù)的輸出格式

      2.2  MATLAB矩陣

      2.2.1  矩陣的建立
      1
      .直接輸入法
         
      最簡單的建立矩陣的方法是從鍵盤直接輸入矩陣的元素。具體方法如下:將矩陣的元素用方括號括起來,按 矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號分隔,不同行的元素之間用分號分隔。

      2.利用M文件建立矩陣
         
      對于比較大且比較復(fù)雜的矩陣, 可以為它專門建立一個M文件。下面通過一個簡單例子來說明如何利用M文件創(chuàng)建矩陣。

          2-2  利用M文件建立MYMAT矩陣。
      (1)
      啟動有關(guān)編輯程序或MATLAB文本編輯器,并輸入待建矩陣:
      (2)
      把輸入的內(nèi)容以純文本方式存盤(設(shè)文件名為mymatrix.m)。
      (3)
      MATLAB命令窗口中輸入mymatrix,即運行該M文件,就會自動建立一個名為MYMAT的矩陣,可供以后使用。

      3.利用冒號表達式建立一個向量
         
      冒號表達式可以產(chǎn)生一個行向量,一般格式是:
          e1:e2:e3
      其中e1為初始值,e2為步長,e3為終止值。
      MATLAB中,還可以用linspace函數(shù)產(chǎn)生行向量。其調(diào)用格式為:
      linspace(a,b,n)
      其中ab是生成向量的第一個和最后一個元素,n是元素總數(shù)。
      顯然,linspace(a,b,n)a:(b-a)/(n-1):b等價。
      4
      .建立大矩陣
      大矩陣可由方括號中的小矩陣或向量建立起來。

      2.2.2  矩陣的拆分
      1
      .矩陣元素
         
      通過下標引用矩陣的元素,例如
      A(3,2)=200
      采用矩陣元素的序號來引用矩陣元素。矩陣 元素的序號就是相應(yīng)元素在內(nèi)存中的排列順序。在MATLAB中,矩陣元素按列存儲,先第一列,再第二列,依次類推。例如
      A=[1,2,3;4,5,6];
      A(3)
      ans =
           2
      顯然,序號(Index)與下標(Subscript )是一一對應(yīng)的,以m×n矩陣A為例,矩陣元素A(i,j)的序號為(j-1)*m+i。其相互轉(zhuǎn)換關(guān)系也可利 用sub2indind2sub函數(shù)求得。

      2.矩陣拆分
          (1)
      利用冒號表達式獲得子 矩陣
             
      A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。
             
      A(i:i+m,:)表示取A矩陣第ii+m行的全部元素;A(:,k:k+m)表示取A矩陣第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第ii+m行內(nèi),并在第kk+m列中的所有元素。
      此外,還可利用一般向量和end運算符來表示矩陣下標,從而獲得子矩 陣。end表示某 一維的末尾元素下標。

          (2) 利用空矩陣刪除矩陣的元素
         
      MATLAB中,定義[]為空矩陣。給變量X賦空矩陣的語句為X=[]。注意,X=[]clear X不同,clear是將X從工作空間中刪除,而空矩陣則存在于工作空間中,只是維數(shù)為0

      2.2.3  特殊矩陣
      1
      .通用的特殊矩陣
      常用的產(chǎn)生通用特殊矩陣的函數(shù) 有:
      zeros
      :產(chǎn)生全0矩陣(零 矩陣)。
      ones
      :產(chǎn)生全1矩陣(幺矩陣)。
      eye
      :產(chǎn)生單位矩陣。
      rand
      :產(chǎn)生01間均勻分布的隨機矩陣。
      randn
      :產(chǎn)生均值為0,方差為1的標準正態(tài)分布隨機矩陣。

      2-3  分別建立3×3、3×2和與矩陣A同樣大小的零矩陣。
      (1)
      建立一個3×3零矩陣。
      zeros(3)
      (2)
      建立一個3×2零矩陣。
      zeros(3,2)
      (3)
      設(shè)A2×3矩陣,則可以用zeros(size(A))建立一個與矩陣A同樣大小零矩陣。
      A=[1 2 3;4 5 6];    %
      產(chǎn)生一個2×3階矩陣A
      zeros(size(A))      %
      產(chǎn)生一個與矩陣A同樣大小的零矩陣

      2-4 建立隨機矩陣:
      (1)
      在區(qū) 間[20,50]內(nèi)均勻分布的5階隨機矩陣。
      (2)
      均值為0.6、方差為0.15階正態(tài)分布隨機矩陣。
      命令如下:
      x=20+(50-20)*rand(5)
      y=0.6+sqrt(0.1)*randn(5)
      此外,常用 的函數(shù)還有reshape(A,m,n),它在矩陣總元素保持不變的前提下,將矩陣A重新排成m×n的二維矩陣。

      2.用于專門學科的特殊矩陣
      (1)
      魔方矩陣
      魔方矩陣有一個有趣的性質(zhì),其每行、每列及兩條對角線上的元素和都相等。對于n階魔方陣,其元素由1,2,3,…,n2n2個整數(shù)組成。MATLAB提供了求魔方矩陣的函數(shù)magic(n),其功能是生成一個n階魔方陣。

      2-5  101~12525個數(shù)填入一個55列的表格中,使其每行每列及對角線的和均為565
      M=100+magic(5)

      (2) 范得蒙矩陣
      范得蒙(Vandermonde)矩陣最后一列全為1,倒數(shù)第二列為一個指定的向量,其他各列是其后列與倒數(shù)第二列的點乘積??梢杂靡粋€指定向量生成一 個范得蒙矩陣。在MATLAB中,函數(shù)vander(V)生成以向量V為基礎(chǔ)向量的范得蒙矩陣。例如,A=vander([1;2;3;5])即可得到上述范得蒙矩陣。

      (3) 希爾伯特矩陣
      MATLAB中,生成希爾伯特矩陣的函數(shù)是hilb(n)。
      使用一般方法求逆會因為原始數(shù)據(jù)的微小擾動而產(chǎn)生不可靠的計算結(jié)果。MATLAB中,有一個專門求希爾伯特矩陣的 逆的函數(shù)invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。

      2-6  4階希爾伯特矩陣及其逆矩陣。
      命令如下:
      format rat     %
      以有理形式輸出
      H=hilb(4)
      H=invhilb(4)

      (4) 托普利茲矩陣
      托普利茲(Toeplitz)矩陣除第一行第一列外,其他每個元素都與左上角的元素相同。生成托普利茲矩陣的函數(shù)是toeplitz(x,y),它生成一個以x為第一列,y為第一行的托普利茲矩陣。這里x, y均為向量,兩者不必等長。toeplitz(x)用向量x生成一個對稱的托普利茲矩陣。例如
      T=toeplitz(1:6)

      (5) 伴隨矩陣
      MATLAB
      生成伴隨矩陣的函數(shù)是compan(p),其中p是一個多項式的系數(shù)向量,高次冪系數(shù)排在前,低次冪排在后。例如,為了求多項式的x3-7x+6的伴隨矩陣,可使用命令:
      p=[1,0,-7,6];
      compan(p)

      (6) 帕斯卡矩陣
      我們知道,二次項(x+y)n展開后的系數(shù)隨n的增大組成一個三角形表,稱為楊輝三角形。由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。函數(shù)pascal(n)生成一個n階帕斯卡矩陣。

      2-7  (x+y)5的展開式。
      MATLAB命令窗口,輸入命令:
      pascal(6)
      矩陣次對角線上的元素1,5,10,10,5,1即為展開式的系 數(shù)。

      2.3  MATLAB運算
      2.3.1
      算術(shù)運算
      1
      .基本算術(shù)運算
          MATLAB
      的基本算術(shù)運算有:+()、-()、*()/(右除)、\(左除)、^(乘方)。
      注意,運算是在矩陣意義下進行的,單個數(shù)據(jù)的算術(shù)運算只是一種特例。

          (1) 矩陣加減運算
         
      假定有兩個矩陣AB,則可以由A+BA-B實現(xiàn)矩陣的加減運算。運算規(guī)則是:若AB矩陣的維數(shù)相同,則可以執(zhí)行矩陣的加減運算,AB矩陣的相應(yīng)元素相加減。如果AB的維數(shù)不相同,則MATLAB將給出錯誤信息,提示用戶兩個矩陣的維數(shù)不匹配。

          (2) 矩陣乘法 
      假定有兩個矩陣AB,若Am×n矩陣,Bn×p矩陣,則C=A*Bm×p矩陣。

          (3) 矩陣除法
      MATLAB中,有兩種 矩陣除法運算:\/,分別表示左除和右除。如果A矩陣是非奇異方陣,則A\BB/A運算可以實現(xiàn)。A\B等效于A的逆左乘B矩陣,也就是inv(A)*B,而B/A等效于A矩陣的逆右乘B矩陣,也就是B*inv(A)。
      對于含有標量 的運算,兩種除法運算的結(jié)果相同,如3/44\3有相同的值,都等于0.75。又如,設(shè)a=[10.5,25],則a/5=5\a=[2.1000 5.0000]。對于矩陣來說,左除和右除表示兩種不同的除數(shù)矩陣和被 除數(shù)矩陣的關(guān)系。對于矩陣運算,一般A\BB/A

          (4) 矩陣的乘方
         
      一個矩陣的乘方運算可以表示成A^x,要求A為方陣,x為標量。
      2
      .點運算
         
      MATLAB中,有一種特殊的運算,因為其運 算符是在有關(guān)算術(shù)運算符前面加點,所以叫點運算。點運算符有.*、./、.\.^。兩矩陣進行點運算是指它們的對應(yīng)元素進行相關(guān)運算,要求兩矩陣的維參數(shù)相同。

      2.3.2  關(guān)系運算
          MATLAB
      提供了6種關(guān)系運算符:<(小于)、<=(小于或等于)、>(大于)>=(大于或等于)、==(等于)、~=(不等于)。它們的含義不難理解,但要注意其書寫方法與數(shù)學中的不等式符號不盡相同。

          關(guān)系運算符的運算法則為:
          (1)
      當兩個比較量是標量時,直接比較兩數(shù)的大小。若關(guān)系成立,關(guān)系表達式結(jié)果為1,否則為0。
          (2)
      當參與比較的量是兩個維數(shù)相同的矩陣時,比較是對兩矩陣相同位置的元素按標量關(guān)系運算規(guī)則逐個進行, 并給出元素比較結(jié)果。最終的關(guān)系運算的結(jié)果是一個維數(shù)與原矩陣相同的矩陣,它的元素由01組成。

          (3) 當參與比較的一個是標量,而另一個是矩陣時,則 把標量與矩陣的每一個元素按標量關(guān)系運算規(guī)則逐個比較,并給出元素比較結(jié)果。最終的關(guān)系運算的結(jié)果是一個維數(shù)與原矩陣相同的矩陣,它的元素由01組成。

          2-8  產(chǎn)生5階隨機方陣A,其元素為[10,90]區(qū)間的隨機整數(shù),然后判斷A的元素是否能被3整除。
          (1)
      生成5階隨機方陣A。
      A=fix((90-10+1)*rand(5)+10)
          (2)
      判斷A的元素是否可以被3整除。
       P=rem(A,3)==0
      其中,rem(A,3)是矩陣A的每個元素除以3的余數(shù)矩陣。此時,0被擴展為與A同維數(shù)的零矩陣,P是進行等于(==)比較的結(jié)果矩陣。

      2.3.3  邏輯運算
          MATLAB
      提供了3種邏輯運算符:&()、|()和~()。
         
      邏輯運算的運算法則為:
      (1)
      在邏輯運算中,確認非零元 素為真,用1表 示,零元素為假,用0表示。
      (2)
      設(shè)參與邏輯運算的是兩個標量ab,那么,
          a&b  a,b
      全為非零時,運算結(jié)果為1,否則為0。
          a|b  a,b
      中只要有一個非零,運算結(jié)果為1
         
      a  a是零時,運算結(jié)果為1;當a非零時,運算結(jié)果為0。

      (3) 若參與邏輯運算的是兩個同維矩陣,那么運算將對矩陣相同位置上的元素按標量規(guī)則逐個進行。最終運算結(jié) 果是一個與原矩陣同維的矩陣,其元素由10組成。
      (4)
      若參與邏輯運算的一個是標量,一個是矩陣,那么運算將在標量與矩陣中的每個元素之間按標量規(guī)則逐個 進行。最終運算結(jié)果是一個與矩陣同維的矩陣,其元素由10組成。
      (5)
      邏輯非是單目運算符,也服從矩陣運算規(guī)則。
      (6)
      在算術(shù)、關(guān)系、邏輯運算中,算術(shù)運算優(yōu)先級最高,邏輯運算優(yōu)先 級最低。

      2-9  建立矩陣A,然后找出大于4的元素的位置。
      (1)
      建立矩陣A。
      A=[4,-65,-54,0,6;56,0,67,-45,0]
      (2)
      找出大于4的元素的位置。
      find(A>4)

      2.4 矩陣分析
      2.4.1 
      對角陣與三角陣
      1
      .對角陣
      只有對角線上有非0元素的矩陣稱為對角矩陣,對角線上的元素相等的對角矩陣稱為數(shù)量矩陣,對角線上的元素都為1的對角矩陣稱為單位矩陣。

      (1) 提取矩陣的對角線元素
      設(shè)Am×n矩陣,diag(A)函數(shù)用于提取矩陣A主對角線元素,產(chǎn)生一個具有min(m,n)個元素的列向量。
      diag(A)
      函數(shù)還有一種形式diag(A,k),其功能是提取第k條對角線的元素。
      (2)
      構(gòu)造對角矩陣
      設(shè)V為具有m個元素的向量,diag(V)將產(chǎn)生一個m×m對角矩陣,其主對角線元素即為向量V的元素。
      diag(V)
      函數(shù)也有另一種形式diag(V,k),其功能是產(chǎn)生一個n×n(n=m+)對角陣,其第k條對角線的元素即為向量V的元素。

      2-10  先建立5×5矩陣A,然后將A的第一行元素乘以1,第二行乘以2,,第五行乘以5。
      A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;...
      11,18,25,2,19];
      D=diag(1:5);
      D*A                %
      D左乘A,對A的每行乘以一個指定常數(shù)

      2.三角陣
      三角陣又進一步分為上三角陣和下三角陣,所謂上三角陣,即矩陣的對角線以下的元素全為0的一種矩陣,而下三角陣則是對角線以上的 元素全為0的一種 矩陣。

      (1) 上三角矩陣
      求矩陣A的上三角陣的MATLAB函數(shù)是triu(A)
      triu(A)
      函數(shù)也有另一種形式triu(A,k),其功 能是求矩陣A的第k條對角線以上的元素。例如,提取矩陣A的第2條對角線以上的元素,形 成新的矩陣B。
      (2)
      下三角矩陣
      MATLAB中,提取矩陣A的下三角矩陣的函數(shù)是tril(A)tril(A,k),其用法與提取上三角矩陣的函數(shù)triu(A)triu(A,k)完全相 同。

      2.4.2  矩陣的轉(zhuǎn)置與旋轉(zhuǎn)
      1
      .矩陣的轉(zhuǎn)置
      轉(zhuǎn)置運算符是單撇號(‘)
      2
      .矩陣的旋轉(zhuǎn)
      利用函數(shù)rot90(A,k)將矩陣A旋轉(zhuǎn)90ºk倍,當k1時可省略。
      3.矩陣的左右翻轉(zhuǎn)
      對矩陣實施左右翻轉(zhuǎn)是將原矩陣的 第一列和最后一列調(diào)換,第二列和倒數(shù)第二列調(diào)換,,依次類推。MATLAB對矩陣A實施左右翻轉(zhuǎn)的函數(shù)是fliplr(A)。
      4
      .矩陣的上下翻轉(zhuǎn)
      MATLAB
      對矩陣A實施上下翻轉(zhuǎn)的函數(shù)是flipud(A)

      2.4.3  矩陣的逆與偽逆
      1
      .矩陣的逆
      對于一個方陣A,如果存在一個與其同階的方陣B,使得:
      A·B=B·A=I (I
      為單位矩 陣)
      則 稱BA的逆矩陣,當然,A也是B的逆矩陣。
      求一個矩陣的逆是一件非常煩瑣的工 作,容易出錯,但在MATLAB中,求一個矩陣的逆非常容易。求方陣A的逆矩陣可調(diào)用函數(shù)inv(A)。
      2-11  用求逆矩陣的方法解線性方程組。
      Ax=b
      其解為:
      x=A-1b

      2.矩陣的偽逆
      如果矩陣A不是一個方陣,或者A是一個非滿秩的方陣時,矩陣A沒有逆矩陣,但可以找到一個與A的轉(zhuǎn)置矩陣A‘同型的矩陣B,使得:
      A·B·A=A
      B·A·B=B
      此時稱矩陣B為矩陣A的偽逆,也稱為廣義逆矩陣。在MATLAB中,求一個矩陣偽逆的函數(shù)是pinv(A)

      2.4.4 方陣的行列式
      把一個方陣看作一個行列式,并對其按行列式的規(guī)則求值,這個值就稱為矩陣所對應(yīng)的行列式的值。在MATLAB中,求方陣A所對應(yīng)的行列式的值的函數(shù)是det(A)

      2.4.5  矩陣的秩與跡
      1
      .矩陣的秩
      矩陣線性無關(guān)的行數(shù)與列數(shù)稱為矩 陣的秩。在MATLAB中,求矩陣秩的函數(shù)是rank(A)。
      2
      .矩陣的跡
      矩陣的跡等于矩陣的對角線元素之和,也等于矩陣的特征值之和。在MATLAB中,求矩陣的跡的函數(shù)是trace(A)。

      2.4.6  向量和矩陣的范數(shù)
      矩陣或向量的范數(shù)用來度量矩陣或 向量在某種意義下的長度。范數(shù)有多種方法定義,其定義不同,范數(shù)值也就不同。

      1.向量的3種常用范數(shù)及其計算函數(shù)
      MATLAB中,求向量范數(shù)的函數(shù)為:
      (1) norm(V)
      norm(V,2):計算向量V2—范數(shù)。
      (2) norm(V,1)
      :計算向量V1—范數(shù)。
      (3) norm(V,inf)
      :計算向量V的∞范數(shù)。
      2.矩陣的范數(shù)及其計算函 數(shù)
      MATLAB
      提供了求3種矩陣范數(shù)的函數(shù),其函數(shù)調(diào)用格式與求向量的范數(shù)的函數(shù)完全相同。

      2.4.7  矩陣的條件數(shù)
      MATLAB中,計算矩陣A3種條件數(shù)的函數(shù)是:
      (1) cond(A,1)  
      計算A1—范數(shù)下的條件數(shù)。
      (2) cond(A)
      cond(A,2)   計算A2—范數(shù)數(shù)下的條件數(shù)。
      (3) cond(A,inf)  
      計算A 范數(shù)下的條件數(shù)。

      2.4.8  矩陣的特征值與特征向量
      MATLAB中,計算矩陣A的特征值和特征向量的函數(shù)是eig(A),常用的調(diào)用格式有3種:
      (1) E=eig(A)
      :求矩陣A的全部特征值,構(gòu)成向量E。
      (2) [V,D]=eig(A)
      : 求矩陣A的全部特 征值,構(gòu)成對角陣D, 并求A的特征向量 構(gòu)成V的列向量。
      (3) [V,D]=eig(A,‘nobalance’)
      :與第2種格式類似,但第2種格式中先對A作相似變換后求矩陣A的特征值和特征向量,而格式3直接求矩陣A的特征值和特征向量。

      2-12  用求特征值的方法解方程。
      3x5-7x4+5x2+2x-18=0
      p=[3,-7,0,5,2,-18];
      A=compan(p);           %A
      的伴隨矩陣
      x1=eig(A)              %
      A的特征值
      x2=roots(p)                 %
      直接求多項式p的零點

      2.5 矩陣的超越 函數(shù)
      1
      . 矩陣平方根sqrtm
      sqrtm(A)
      計算矩陣A的平方根。
      2
      .矩陣對數(shù)logm
      logm(A)
      計算矩陣A的自然對數(shù)。此函數(shù)輸入?yún)?shù)的條件與輸出結(jié) 果間的關(guān)系和函數(shù)sqrtm(A)完全一樣
      3
      .矩陣指數(shù)expm、expm1、expm2expm3
      expm(A)
      expm1(A)、expm2(A)expm3(A)的功能都求矩陣指數(shù)eA。
      4
      .普通矩陣函數(shù)funm
      funm(A,‘fun’)
      用來計算直接作用于矩陣A的由‘fun’指定的超越函數(shù)值。當funsqrt時,funm(A,‘sqrt’)可以計算矩陣A的平方根,與sqrtm(A)的計算結(jié)果一樣。

      2.6  字符串
         
      MATLAB中,字符串是用單撇號括起來的字符序列。
      MATLAB
      將字符串當作一個行向量,每個元素對應(yīng)一個字符,其標識方 法和數(shù)值向量相同。也可以建立多行字符串矩陣。

      字符串是以ASCII碼形式存儲的。absdouble函數(shù)都可以用來獲取字符串矩陣所 對應(yīng)的ASCII碼 數(shù)值矩陣。相反,char函數(shù)可以把ASCII碼矩陣轉(zhuǎn)換為字符串矩陣。

      2-13  建立一個字符串向量,然后對該向量做如下處理:
      (1)
      取第15個字符組成的子字符串。
      (2)
      將字符串倒過來重新排列。
      (3)
      將字符串中的小寫字母變成相應(yīng)的大寫字母,其余字符不變。
      (4)
      統(tǒng)計字符串中小寫字母的 個數(shù)。

      命令如下:
      ch=‘ABc123d4e56Fg9’;
      subch=ch(1:5)           %
      取子字符串
      revch=ch(end:-1:1)       %
      將字符串倒排
      k=find(ch>=‘a’&ch<=‘z’);     %
      找小寫字母的位置
      ch(k)=ch(k)-(‘a’-‘A’);         %
      將小寫字母變成相應(yīng)的大寫字母
      char(ch)               
      length(k)                  %
      統(tǒng)計小寫字母的個數(shù)

          與字符串有關(guān)的另一個重要函數(shù) 是eval,其調(diào)用格式為:
          eval(t)
      其中t為字符串。它的作用是 把字符串的內(nèi)容作為對應(yīng)的MATLAB語句來執(zhí)行。

      2.7  結(jié)構(gòu)數(shù)據(jù) 和單元數(shù)據(jù)
      2.7.1 
      結(jié)構(gòu)數(shù)據(jù)
      1
      .結(jié)構(gòu)矩陣的建立與引用
      結(jié)構(gòu)矩陣的元素可以是不同的數(shù)據(jù)類型,它能將一組具有不同屬性的數(shù)據(jù)納入到一個統(tǒng)一的變量名下進行 管理。建立一個結(jié)構(gòu)矩陣可采用給結(jié)構(gòu)成員賦值的辦法。具體格式為:
      結(jié)構(gòu)矩陣名.成員名=表達式
      其中表達式應(yīng)理解為矩陣表達式。

      2.結(jié)構(gòu)成員的修改
      可以根據(jù)需要增加或刪除結(jié)構(gòu)的成員。例如要給結(jié)構(gòu)矩陣a增加一個成員x4,可給a中任意一個元素增加成員x4
      a(1).x4=‘410075’;
      但其他成員均為空矩陣,可以使用賦值語句給它賦確定的值。
      要刪除結(jié)構(gòu)的成員,則可以使用rmfield函數(shù)來完成。例如,刪除成員x4
      a=rmfield(a,‘x4’);
      3
      .關(guān)于結(jié)構(gòu)的函數(shù)
      除了一般的結(jié)構(gòu)數(shù)據(jù)的操作外,MATLAB還提供了部分函數(shù)來進行結(jié)構(gòu)矩 陣的操作。

      2.7.2  單元數(shù)據(jù)
      1
      .單元矩陣 的建立與引用
      建立單元矩陣和一般矩陣相似,只是矩陣元素用大括號括起來。
      可以用帶有大括 號下標的形式引用單元矩陣元素。例如b{3,3}。單元矩陣的元素可以是結(jié)構(gòu)或單元數(shù)據(jù)。
      可以使用celldisp函數(shù)來 顯示整個單元矩陣,如celldisp(b)。還可以刪除單元矩陣中的某個元素。2.關(guān)于單元的函數(shù)
      MATLAB
      還 提供了部分函數(shù)用于單元的操作。

      2.8 稀疏矩陣
      2.8.1 
      矩陣存儲方式
      MATLAB
      的矩陣有兩種存儲方式:完全存儲方式和稀疏存儲方式。
      1
      .完全存儲方式
      完全存儲方式是將矩陣的全部元素 按列存儲。以前講到的矩陣的存儲方式都是按這個方式存儲的,此存儲方式對稀疏矩陣也適用。

      2.稀疏存儲方式
      稀疏存儲方式僅存儲矩陣所有的非零元素的值及其位置,即行號和列號。在MATLAB中,稀疏存儲方式也是按列存儲 的。
      注 意,在講稀疏矩陣時,有兩個不同的概念,一是指矩陣的0元素較多,該矩陣是一個具有稀疏特征的矩陣,二是指采用稀疏方式存儲的矩陣。

      2.8.2  稀疏存儲方式的產(chǎn)生
      1
      .將完全存 儲方式轉(zhuǎn)化為稀疏存儲方式
      函數(shù)A=sparse(S)將矩陣S轉(zhuǎn)化為稀疏存儲方式的矩陣A。當矩陣S是稀疏存儲方式時,則函數(shù)調(diào)用相當于A=S。
      sparse
      函 數(shù)還有其他一些調(diào)用格式:
      sparse(m,n)
      :生成一個m×n的所有元素都是0的稀疏矩陣。
      sparse(u,v,S)­­
      u,v,S3個等長的向量。S是要建立的稀疏矩陣的 非0元素,u(i)v(i)分別是S(i)的行和列下標,該函數(shù)建立一個max(u)行、max(v)列并以S為稀疏元素的稀疏矩 陣。
      此外,還有一些和稀疏矩陣操作有關(guān)的函數(shù)。例如
      [u,v,S]=find(A)
      : 返回矩陣A中非0元素的下標和元素。這里產(chǎn)生的u,v,S可作為sparse(u,v,S)的 參數(shù)。
      full(A)
      :返回和稀疏存儲矩陣A對應(yīng)的完全存儲方式矩陣。

      2.產(chǎn)生稀疏存儲矩陣
      只把要建立的稀疏矩陣的非0元素及其所在行和列的位置表示出來后由MATLAB自己產(chǎn)生其稀疏存儲,這需要使用spconvert函數(shù)。調(diào)用格式為:
      B=spconvert(A)
      其中A為一個m×3m×4的矩陣,其每行表示一個非0元素,m是非0元素的個數(shù),A每個元素的意義是:
      (i,1) 
      i個非0元素所在的行。
      (i,2) 
      i個非0元素所在的列。
      (i,3) 
      i個非0元素值的實部。
      (i,4) 
      i個非0元素值的虛部,若矩陣的全部元素都是實數(shù), 則無須第四列。
      該函數(shù)將A所描述的一個稀疏矩陣轉(zhuǎn)化為一個稀疏存儲矩陣。

      2-15  根據(jù)表示稀疏矩陣的矩陣A,產(chǎn)生一個稀疏存儲方式矩陣B
      命令如下:
      A=[2,2,1;3,1,-1;4,3,3;5,3,8;6,6,12];
      B=spconvert(A)

      3.帶狀稀疏存儲矩陣
      spdiags函數(shù)產(chǎn)生帶狀稀疏矩陣的稀疏存儲,調(diào)用格式是:
      A=spdiags(B,d,m,n)
      其中,參數(shù)m,n為原帶狀矩陣的行數(shù)與列數(shù)。Br×p階矩陣,這里r=min(m,n),p為原帶狀矩陣所有非零對角線的條數(shù),矩陣B的第i列即為原帶狀矩陣的第i條非零對角線。

      4.單位矩陣的稀疏存儲
      單位矩陣只有對角線元素為1,其他元素都為0,是一種具有稀疏特征的矩陣。函數(shù)eye產(chǎn)生一個完全存儲方式的單位矩陣。MATLAB還有一個產(chǎn)生稀疏存儲方式的單位矩陣的函數(shù),這就是speye。函數(shù)speye(m,n)返回一個m×n的稀疏存儲單位矩陣。

      2.8.3  稀疏矩陣應(yīng)用舉例
      稀疏存儲矩陣只是矩陣的存儲方式 不同,它的運算規(guī)則與普通矩陣是一樣的。所以,在運算過程中,稀疏存儲矩陣可以直接參與運算。當參與運算的對象不全是稀疏存儲矩陣時,所得結(jié)果一般是完全 存儲形式。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多