一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

5、矩陣及其運(yùn)算

 陸瀟瀟 2016-10-27

矩陣是MATLAB數(shù)據(jù)存儲的基本單元,而矩陣的運(yùn)算是MATLAB語言的核心,在MATLAB語言系統(tǒng)中幾乎一切運(yùn)算均是以對矩陣的操作為基礎(chǔ)的。下面重點(diǎn)介紹矩陣的生成、矩陣的基本運(yùn)算和矩陣的數(shù)組運(yùn)算。

 5.1  矩陣的生成

若要輸入矩陣,則必須在每一列結(jié)尾加上分號(;),如下例:  

A = [1 2 3 4; 5 6 7 8; 9 10 11 12];   

A =   

1  2  3  4   

5  6  7  8   

9  10 11  12  

1.  直接輸入法

從鍵盤上直接輸入矩陣是最方便、最常用的創(chuàng)建數(shù)值矩陣的方法,尤其適合較小的簡單矩陣。在用此方法創(chuàng)建矩陣時,應(yīng)當(dāng)注意以下幾點(diǎn):

●    輸入矩陣時要以“[  ]”為其標(biāo)識符號,矩陣的所有元素必須都在括號內(nèi)。

●    矩陣同行元素之間由空格或逗號分隔,行與行之間用分號或回車鍵分隔。

●    矩陣大小不需要預(yù)先定義。

●    矩陣元素可以是運(yùn)算表達(dá)式。

●    若“[  ]”中無元素表示空矩陣。

2.利用M文件建立矩陣  

對于比較大且比較復(fù)雜的矩陣,可以為它專門建立一個M文件。利用M文件建立MYMAT矩陣:

(1) 啟動有關(guān)編輯程序或MATLAB文本編輯器,并輸入待建矩陣:

(2) 把輸入的內(nèi)容以純文本方式存盤(設(shè)文件名為mymatrix.m)。

(3) 在MATLAB命令窗口中輸入mymatrix,即運(yùn)行該M文件,就會自動建立一個名為MYMAT的矩陣,可供以后使用。

外部文件讀入法

可以利用任意的文本編輯器編輯所要使用的矩陣,矩陣元素之間以特定分?jǐn)喾珠_,并按行列布置。讀入矩陣的一種方法可參考數(shù)據(jù)交換系統(tǒng)。

另外MATLAB語言也允許用戶調(diào)用在MATLAB環(huán)境之外定義的矩陣??梢岳胠oad函數(shù),其調(diào)用方法為: Load+文件名[參數(shù)]

Load函數(shù)將會從文件名所指定的文件中讀取數(shù)據(jù),并將輸入的數(shù)據(jù)賦給以文件名命名的變量,如果不給定文件名,則將自動認(rèn)為matlab.mat文件為操作對象,如果該文件在MATLAB搜索路徑中不存在時,系統(tǒng)將會報錯。

例如:   事先在記事本中建立文件:  1    1     1

          (并以data1.txt保存)               1    2     3

                                                           1    3     6

在MATLAB命令窗口中輸入:

         >> load  data1.txt

>> data1

       data1=

              1    1     1

              1    2     3

              1    3     6

3. 利用冒號表達(dá)式建立一個向量

冒號表達(dá)式可以產(chǎn)生一個行向量,一般格式是:

e1:e2:e3 其中e1為初始值,e2為步長,e3為終止值。

首先,可以用冒號來定義行向量。

例如:

>> a=1:0.5:4

a=

   Columns?。?through 7

     1      1.5       2      2.5       3           3.5       4

其次,通過使用冒號,可以截取指定矩陣中的部分。

例如:

   >> A=[1  2  3;4  5  6;7  8  9]

  

 A=

       1     2      3

       4     5      6

       7     8      9

>> B=A (1:2, : )

B=

     1       2        3

     4       5        6

通過上例可以看到B是由矩陣A的1到2行和相應(yīng)的所有列的元素構(gòu)成的一個新的矩陣。在這里,冒號代替了矩陣A的所有列。

在MATLAB中,還可以用linspace函數(shù)產(chǎn)生行向量。

其調(diào)用格式為: linspace(a,b,n)

其中a和b是生成向量的第一個和最后一個元素,n是元素總數(shù)。

顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價。

4.特殊矩陣的生成

對于一些比較特殊的矩陣(單位陣、矩陣中含1或0較多),由于其具有特殊的結(jié)構(gòu),MATLAB提供了一些函數(shù)用于生成這些矩陣。常用的有下面幾個:

zeros(m)                         生成m階全0矩陣

eye(m)                          生成m階單位矩陣

ones(m)                         生成m階全1矩陣

rand(m)                         生成m階均勻分布的隨機(jī)陣

randn(m)                        生成m階正態(tài)分布的隨機(jī)矩陣

 

我們可以對矩陣進(jìn)行各種處理:  

A(2,3) = 5 % 改變位於第二列,第三行的元素值  

A =   

1  2  3  4  

5  6  5  8   

9  10 11  12   

B = A(2,1:3) % 取出部份矩陣B  

B = 5 6 5  

A = [A B'] % 將B轉(zhuǎn)置後以行向量并入A  

A =   

1  2  3   4  5   

5  6  5   8  6   

9  10 11  12  5  

A(:, 2) = [] % 刪除第二行(:代表所有列)  

A =   

1  3  4  5   

5  5  8  6   

9  11 12  5   

A = [A; 4 3 2 1] % 加入第四列   

A =   

1  3   4   5   

5  5   8   6   

9  11  12  5  

4  3   2   1  

A([1 4], :) = [] % 刪除第一和第四列(:代表所有行)  

A =   

5  5   8   6   

9  11  12  5  

這幾種矩陣處理的方式可以相互疊代運(yùn)用,產(chǎn)生各種意想不到的效果。

 

小提示:在MATLAB的內(nèi)部資料結(jié)構(gòu)中,每一個矩陣都是一個以行為主(Column-oriented )的陣列(Array)因此對於矩陣元素的存取,我們可用一維或二維的索引(Index)來定址。舉例來說,在上述矩陣A中,位於第二列、第三行的元素可寫為A(2,3) (二維索引)或A(6)(一維索引,即將所有直行進(jìn)行堆疊後的第六個元素)。  

此外,若要重新安排矩陣的形狀,可用reshape命令:  

B = reshape(A, 4, 2) % 4是新矩陣的列數(shù),2是新矩陣的行數(shù)  

B =  

5   8   

9   12   

5   6   

11  5  

小提示: A(:)就是將矩陣A每一列堆疊起來,成為一個行向量,而這也是MATLAB變數(shù)的內(nèi)部儲存方式。以前例而言,reshape(A, 8, 1)和A(:)同樣都會產(chǎn)生一個8x1的矩陣。 

5.2  矩陣的基本數(shù)學(xué)運(yùn)算

矩陣的基本數(shù)學(xué)運(yùn)算包括矩陣的四則運(yùn)算、與常數(shù)的運(yùn)算、逆運(yùn)算、行列式運(yùn)算、秩運(yùn)算、特征值運(yùn)算等基本函數(shù)運(yùn)算,這里進(jìn)行簡單介紹。

1.四則運(yùn)算

矩陣的加、減、乘運(yùn)算符分別為“+,—,*” ,用法與數(shù)字運(yùn)算幾乎相同,但計算時要滿足其數(shù)學(xué)要求(如:同型矩陣才可以加、減)。

在MATLAB中矩陣的除法有兩種形式:左除“\”和右除“/”。在傳統(tǒng)的MATLAB算法中,右除是先計算矩陣的逆再相乘,而左除則不需要計算逆矩陣直接進(jìn)行除運(yùn)算。通常右除要快一點(diǎn),但左除可避免被除矩陣的奇異性所帶來的麻煩。在MATLAB6中兩者的區(qū)別不太大。

2.與常數(shù)的運(yùn)算    

    常數(shù)與矩陣的運(yùn)算即是同該矩陣的每一元素進(jìn)行運(yùn)算。但需注意進(jìn)行數(shù)除時,常數(shù)通常只能做除數(shù)。

3.基本函數(shù)運(yùn)算

    矩陣的函數(shù)運(yùn)算是矩陣運(yùn)算中最實用的部分,常用的主要有以下幾個:

det(a)                        求矩陣a的行列式

eig(a)                        求矩陣a的特征值

inv(a)或a ^ (-1)                求矩陣a的逆矩陣

rank(a)                       求矩陣a的秩

trace(a)                       求矩陣a的跡(對角線元素之和)

例如: >> a=[2  1  –3  –1; 3  1  0  7; -1  2  4  –2; 1  0  –1  5];

>> a1=det(a);                   

>> a2=det(inv(a));

>> a1*a2

  ans=

          1

注意:命令行后加“;”表示該命令執(zhí)行但不顯示執(zhí)行結(jié)果。

4.2.2  矩陣的數(shù)組運(yùn)算

我們在進(jìn)行工程計算時常常遇到矩陣對應(yīng)元素之間的運(yùn)算。這種運(yùn)算不同于前面講的數(shù)學(xué)運(yùn)算,為有所區(qū)別,我們稱之為數(shù)組運(yùn)算。

1.基本數(shù)學(xué)運(yùn)算

數(shù)組的加、減與矩陣的加、減運(yùn)算完全相同。而乘除法運(yùn)算有相當(dāng)大的區(qū)別,數(shù)組的乘除法是指兩同維數(shù)組對應(yīng)元素之間的乘除法,它們的運(yùn)算符為“.*”和“./”或“.\”。前面講過常數(shù)與矩陣的除法運(yùn)算中常數(shù)只能做除數(shù)。在數(shù)組運(yùn)算中有了“對應(yīng)關(guān)系”的規(guī)定,數(shù)組與常數(shù)之間的除法運(yùn)算沒有任何限制。

另外,矩陣的數(shù)組運(yùn)算中還有冪運(yùn)算(運(yùn)算符為 .^ )、指數(shù)運(yùn)算(exp)、對數(shù)運(yùn)算(log)、和開方運(yùn)算(sqrt)等。有了“對應(yīng)元素”的規(guī)定,數(shù)組的運(yùn)算實質(zhì)上就是針對數(shù)組內(nèi)部的每個元素進(jìn)行的。

例如:

    >> a=[2  1  -3  -1; 3  1  0  7; -1  2  4  -2; 1  0  -1  5];

    >> a^3

       ans=

32  -28  -101  34

99  -12  -151  239

-1   49   93   8

51  -17  -98   139

>> a .^3

        ans=

8   1  -27   -1

27  1   0    343

-1  8   64   -8

 1  0   -1   125

由上例可見矩陣的冪運(yùn)算與數(shù)組的冪運(yùn)算有很大的區(qū)別。

2.邏輯關(guān)系運(yùn)算    

邏輯運(yùn)算是MATLAB中數(shù)組運(yùn)算所特有的一種運(yùn)算形式,也是幾乎所有的高級語言普遍適用的一種運(yùn)算。它們的具體符號、功能及用法見表4-2。

表4-2

符號運(yùn)算符    功 能     函 數(shù) 名

= =  等于       eq

~ =  不等于    ne

<     小于       lt

>     大于       gt

<=   小于等于       le

>=   大于等于       ge

&    邏輯與    and

|      邏輯或    or

~     邏輯非    not

 說明:

  ●   在關(guān)系比較中,若比較的雙方為同維數(shù)組,則比較的結(jié)果也是同維數(shù)組。它的元

素值由0和1組成。當(dāng)比較雙方對應(yīng)位置上的元素值滿足比較關(guān)系時,它的對

應(yīng)值為1,否則為0。

●   當(dāng)比較的雙方中一方為常數(shù),另一方為一數(shù)組,則比較的結(jié)果與數(shù)組同維。

●   在算術(shù)運(yùn)算、比較運(yùn)算和邏輯與、或、非運(yùn)算中,它們的優(yōu)先級關(guān)系先后為:

      比較運(yùn)算、算術(shù)運(yùn)算、邏輯與或非運(yùn)算。

例如:

     >>a=[1  2  3; 4  5  6; 7  8  9];

>> x=5;

>> y= ones(3)*5;

>> xa= x<=a

xa=

0    0    0

0    1    1

1    1    1

>> b=[0  1  0; 1  0  1; 0  0  1];

>> ab=a&b

ab=

         0    1    0

         1    0    1

         0    0    1

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    久久三级国外久久久三级| 久久婷婷综合色拍亚洲| 久久本道综合色狠狠五月| 精品伊人久久大香线蕉综合| 久久精品色妇熟妇丰满人妻91| 大尺度剧情国产在线视频| 99久久精品午夜一区二区| 欧美午夜一级特黄大片| 日韩一区二区免费在线观看| 最好看的人妻中文字幕| 黄色片一区二区三区高清| 日韩成人h视频在线观看| 国产又粗又硬又长又爽的剧情| 国产精品尹人香蕉综合网| 久久国产精品亚州精品毛片| 少妇人妻无一区二区三区| 偷拍洗澡一区二区三区| 中文字幕亚洲精品在线播放| 韩日黄片在线免费观看| 日本熟女中文字幕一区| 福利在线午夜绝顶三级| 亚洲中文字幕视频一区二区| 日本人妻熟女一区二区三区| 亚洲欧美日韩熟女第一页| 伊人色综合久久伊人婷婷| 毛片在线观看免费日韩| 自拍偷拍一区二区三区| 中文字幕亚洲在线一区| 亚洲第一区二区三区女厕偷拍| 亚洲黄片在线免费小视频| 日本办公室三级在线观看| 亚洲欧洲一区二区综合精品| 91欧美视频在线观看免费| 久久这里只精品免费福利| 精品人妻一区二区三区四区久久 | 99国产高清不卡视频| 日韩精品亚洲精品国产精品| 欧美大胆女人的大胆人体| 东京热男人的天堂一二三区 | 亚洲国产综合久久天堂| 99热九九在线中文字幕|