matlab學習報告

Matlab學習報告
    Matlab的主要功能有數值分析、數字圖像處理、數值和符號計算、數字信號處理、工程與科學繪圖、通訊系統設計與仿真、控制系統的設計與仿真、財務與金融工程…… 真的是功能強大。之所以學習MATLAB就是因爲它有很多優點:
    (1).高效的數值計算及符號計算功能,能使用戶從繁雜的數學運算分析中解脫出來;
    (2).具有完備的圖形處理功能,實現計算結果和編程的可視化;
    (3).友好的用戶界面及接近數學表達式的自然化語言,使學者易於學習和掌握;
    (4).功能豐富的應用工具箱(如信號處理工具箱、通信工具箱等) ,爲用戶提供了大量方便實用的處理工具等等。

(一)、回顧
    學習Matlab的時間並不長,不是應爲它容易學習,而是時間太少,我們只是做一個基礎性的瞭解,在未來的學習生活中還要繼續學習。通過這一學期的學習,現在簡單回顧一下。

第一講:簡介 
    本章主要介紹MATLAB的一些基本情況,對該軟件有了一個整體認識。包括:  MATLAB的功能、發展歷史、特點以及安裝等。

第二講:Matlab語言基礎   
    瞭解了數據類型、操作符、基本數學函數、腳本編程、數據類型、操作符。

第三講:MATLAB  數值運算
    本章介紹的數值計算功能包括:向量和數組,並熟悉了它們之間的運算。

第四講:MATLAB  符號運算
    瞭解了符號表達式,符號函數,符號積分,符號微分,符號方程,符號變換等。

第五講:MATLAB  程序設計
    通過對本章的學習,到達了以下要求:
1).可以編寫簡單且功能完善的MATLAB 程序,從而解決各類基本問題,逐步掌握MATLAB 的數值計算方法。

2).掌握命令執行方式:
  (1)交互式方式---命令行
  (2)M文件方式---命令文件、函數文件

3).掌握變量和函數的種類。

4).瞭解程序的調試和優化。

第六講:MATLAB  數據可視化
    瞭解matlab的圖形對象體系,掌握基本的繪圖函數。


(二)、收穫
接下來,我就矩陣運算來談談這次學習的收穫。
1、矩陣的建立
1).直接輸入法。具體方法如下:將矩陣的元素用方括號括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號分隔,不同行的元素之間用分號分隔。
例:A=[1,2,3,;4,5,6;7,8,9]
A =
     1     2     3
     4     5     6
     7     8     9 

2).利用M文件建立矩陣。對於比較大且比較複雜的矩陣,可以爲它專門建立一個M文件。下面通過一個簡單例子來說明如何利用M文件創建矩陣。
例:利用M文件建立MYMAT矩陣。
具體步驟如下:
  (1) 啓動有關編輯程序或MATLAB文本編輯器,並輸入待建矩陣:
  (2) 把輸入的內容以純文本方式存盤(設文件名爲mymatrix.m)。
  (3) 在MATLAB命令窗口中輸入mymatrix,即運行該M文件,就會自動建立一個名爲MYMAT的矩陣,可供以後使用。

3).利用冒號表達式建立一個向量。冒號表達式可以產生一個行向量,一般格式是:
e1:e2:e3。其中e1爲初始值,e2爲步長,e3爲終止值。在MATLAB中,還可以用linspace函數產生行向量。其調用格式爲:linspace(a,b,n)。其中a和b是生成向量的第一個和最後一個元素,n是元素總數。linspace(a,b,n)與a:(b-a)/(n-1):b等價。

4).建立大矩陣。大矩陣可由方括號中的小矩陣或向量建立起來。

2、矩陣的拆分
1).矩陣元素。
    (1)通過下標引用矩陣的元素。
例:>>  A=[3,5,8,7;6,12,5,9;5,8,9,18;3,8,4,16]:
A =
     3     5     8     7
     6    12     5     9
     5     8     9    18
     3     8     4    16
>> A(3,2)
ans =
     8
    (2)採用矩陣元素的序號來引用矩陣元素。
矩陣元素的序號就是相應元素在內存中的排列順序。在MATLAB中,矩陣元素按列存儲,先第一列,再第二列,依次類推。
例:>> A=[1,2,3;4,5,6];
A(3)
ans =
     2
顯然,序號(Index)與下標(Subscript )是一一對應的,以m×n矩陣A爲例,矩陣元素A(i,j)的序號爲(j-1)*m+i。其相互轉換關係也可利用sub2ind和ind2sub函數求得。

2).矩陣拆分。
    (1)利用冒號表達式獲得子矩陣。
A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。A(i:i+m,:)表示取A矩陣第i~i+m行的全部元素;A(:,k:k+m)表示取A矩陣第k~k+m列的全部元素;A(i:i+m,k:k+m)表示取A矩陣第i~i+m行內,並在第k~k+m列中的所有元素。此外,還可利用一般向量和end運算符來表示矩陣下標,從而獲得子矩陣。end表示某一維的末尾元素下標。
    (2)利用空矩陣刪除矩陣的元素。
在MATLAB中,定義[]爲空矩陣。給變量X賦空矩陣的語句爲X=[]。
注意:X=[]與clear X不同,clear是將X從工作空間中刪除,而空矩陣則存在於工作空間中,只是維數爲03、特殊矩陣。

1).通用的特殊矩陣。
常用的產生通用特殊矩陣的函數有:
zeros:產生全0矩陣(零矩陣)。
ones:產生全1矩陣(幺矩陣)。
eye:產生單位矩陣。
rand:產生01間均勻分佈的隨機矩陣。
randn:產生均值爲0,方差爲1的標準正態分佈隨機矩陣。

例1:建立一個3×3零矩陣。
>> zeros(3)
ans =
     0     0     0
     0     0     0
     0     0     02:建立隨機矩陣。在區間[20,50]內均勻分佈的5階隨機矩陣。
>> x=20+(50-20)*rand(5)
x =
48.5039   42.8629   38.4630   32.1712   21.7367
   26.9342   33.6940   43.7581   48.0641   30.5860
   38.2053   20.5551   47.6544   47.5071   44.3950
   34.5795   44.6422   42.1462   32.3081   20.2958
   46.7390   33.3411   25.2880   46.8095   24.1667
2).用於專門學科的特殊矩陣。
    (1)範得蒙矩陣。
範得蒙矩陣最後一列全爲1,倒數第二列爲一個指定的向量,其他各列是其後列與倒數第二列的點乘積。可以用一個指定向量生成一個範得蒙矩陣。在MATLAB中,函數vander(V)生成以向量V爲基礎向量的範得蒙矩陣。
例:
>> A=vander([1;2;3;5])
A =
     1     1     1     1
     8     4     2     1
    27     9     3     1
   125    25     5     1

    (2)伴隨矩陣。
MATLAB生成伴隨矩陣的函數是compan(p),其中p是一個多項式的係數向
量,高次冪係數排在前,低次冪排在後。
例:求多項式的x3-7x+6的伴隨矩陣。
>> p=[1,0,-7,6];
compan(p)
ans =
     0     7    -6
     1     0     0
     0     1     0

4、矩陣的MATLAB運算。
1).矩陣的基本運算。
    假定有兩個矩陣A和B,則可以由A+B和A-B實現矩陣的加減運算。
運算規則是:若A和B矩陣的維數相同,則可以執行矩陣的加減運算,A和B矩陣的相應元素相加減。如果A與B的維數不相同,則MATLAB將給出錯誤信息,提示用戶兩個矩陣的維數不匹配。
    其他運算如下:
數乘             k*A   K是一個數,A是一個矩陣).
矩陣的左除       A\B   AX=B, X=A-1B, A必須是方陣).
矩陣的右除       A/B   XB=A,X=AB-1, B必須是方陣).
行列式的秩       det(A) A必須爲方陣).
矩陣的逆         Inv(A) A必須爲方陣,|A| ‡ 0).

2).矩陣的特徵值、特徵向量、特徵多項式。
p=poly(A)
若A爲矩陣,則p爲A的特徵多項式係數;
若A爲行向量,則p爲以A爲根的特徵多項式係數poly2str(p,’x’)特徵多項式。

例1:>> A=[1,-1;2,4];
>> p=poly(A)
p =
     1    -5     6
>> poly2str(p,'x')
ans =
   x^2 - 5 x + 62:>> A=[1,-1;2,4];
[V,D]=eig(A)
V =                                  方陣A的特徵向量矩陣
   -0.7071    0.4472
    0.7071   -0.8944
D =                                  方陣A的特徵值矩陣
     2     0
     0     33:產生5階隨機方陣A,其元素爲[10,90]區間的隨機整數,然後判斷A的元素是否能被3整除。
    (1)生成5階隨機方陣A。
>> A=fix((90-10+1)*rand(5)+10)
A =
    86    71    59    42    14
    28    46    74    85    38
    59    11    84    84    75
    49    76    69    43    10
    82    46    24    82    21

    (2)判斷A的元素是否可以被3整除。
>> P=rem(A,3)==0
P =
     0     0     0     1     0
     0     0     0     0     0
     0     0     1     1     1
     0     0     1     0     0
     0     0     1     0     1
   則爲1的位置對應在原矩陣中的數字即爲能被3整除的數字。

3).矩陣的邏輯運算。
MATLAB提供了3種邏輯運算符:&(與)、|(或)和~(非)。
邏輯運算的運算法則爲:
    (1)在邏輯運算中,確認非零元素爲真,用1表示,零元素爲假,用0表示。
    (2)設參與邏輯運算的是兩個標量a和b,那麼:
a&b  a,b全爲非零時,運算結果爲1,否則爲0a|b   a,b中只要有一個非零,運算結果爲1。
~aa是零時,運算結果爲1;當a非零時,運算結果爲0。
    (3)若參與邏輯運算的是兩個同維矩陣,那麼運算將對矩陣相同位置上的元素按標量
規則逐個進行。最終運算結果是一個與原矩陣同維的矩陣,其元素由10組成。
    (4)若參與邏輯運算的一個是標量,一個是矩陣,那麼運算將在標量與矩陣中的每元素之間按標量規則逐個進行。最終運算結果是一個與矩陣同維的矩陣,其元素由10組成。
    (5)邏輯非是單目運算符,也服從矩陣運算規則。
    (6)在算術、關係、邏輯運算中,算術運算優先級最高,邏輯運算優先級最低。
例:建立矩陣A,然後找出大於4的元素的位置。
>> A=[4,-65,-54,0,6;56,0,67,-45,0]
A =
     4   -65   -54     0     6
    56     0    67   -45     0
>> find(A>4)
ans =
     2             
     6
     9
5、矩陣分析。
1).對角陣。
    (1)提取矩陣的對角線元素
設A爲m×n矩陣,diag(A)函數用於提取矩陣A主對角線元素,產生一個具有min(m,n)個元素的列向量。diag(A)函數還有一種形式diag(A,k),其功能是提取第k條對角線的元素。
    (2)構造對角矩陣。
     設V爲具有m個元素的向量,diag(V)將產生一個m×m對角矩陣,其主對角線元素即爲向量V的元素。

例:先建立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
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
ans =
    17     0     1     0    15
    46    10    14    28    32
    12     0    39     0    66
    40    48    76    84    12
    55    90   125    10    95

2).三角陣。
    (1)上三角矩陣。
求矩陣A的上三角陣的MATLAB函數是triu(A)。triu(A)函數也有另一種形式triu(A,k),其功能是求矩陣A的第k條對角線以上的元素。例如,提取矩陣A的第2條對角線以上的元素,形成新的矩陣B。
    (2)下三角矩陣
在MATLAB中,提取矩陣A的下三角矩陣的函數是tril(A)和tril(A,k),其用法與提取上三角矩陣的函數triu(A)和triu(A,k)完全相同。
例:創建一個5×5矩陣,提取主對角線以上的部分。
>> rand(6)
ans =
    0.2028    0.7468    0.5252    0.3795    0.1897    0.6979
    0.1987    0.4451    0.2026    0.8318    0.1934    0.3784
    0.6038    0.9318    0.6721    0.5028    0.6822    0.8600
    0.2722    0.4660    0.8381    0.7095    0.3028    0.8537
    0.1988    0.4186    0.0196    0.4289    0.5417    0.5936
    0.0153    0.8462    0.6813    0.3046    0.1509    0.4966
>>  triu(rand(6))
ans =
    0.8998    0.2897    0.5681    0.6213    0.9797    0.0118
         0   0.3412    0.3704    0.7948    0.2714    0.8939
         0        0    0.7027    0.9568    0.2523    0.1991
         0        0         0    0.5226   0.8757     0.2987
         0        0         0        0    0.7373    0.6614
         0        0         0        0         0    0.2844

3).矩陣的轉置。
例:>>  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]
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
A'
ans =
    17    23     4    10    11
     0     5     0    12    18
     1     7    13    19    25
     0    14     0    21     2
    15    16    22     3    19


4).矩陣的僞逆。
    如果矩陣A不是一個方陣,或者A是一個非滿秩的方陣時,矩陣A沒有逆矩陣,但可以找到一個與A的轉置矩陣A‘同型的矩陣B,使得:
A•B•A=A
B•A•B=B
此時稱矩陣B爲矩陣A的僞逆,也稱爲廣義逆矩陣。
在MATLAB中,求一個矩陣僞逆的函數是pinv(A)。
例:>> A=[1,5,7,9;5,6,4,2;6,7,5,3]
A =
     1     5     7     9
     5     6     4     2
     6     7     5     3
>> B=pinv(A)
B =
   -0.2000   -2.4000    2.2000
    0.1167    2.3167   -1.9500
    0.0667    0.4667   -0.4000
    0.0167   -1.3833    1.1500
>> A*B*A
ans =
    1.0000    5.0000    7.0000    9.0000
    5.0000    6.0000    4.0000    2.0000
    6.0000    7.0000    5.0000    3.0000
5).矩陣的秩。
    矩陣線性無關的行數與列數稱爲矩陣的秩。在MATLAB中,求矩陣秩的函數是rank(A)。

(三)、心得體會
    通過理論課的講解與實驗課的操作,使我在短時間內學會使用MATLAB,同時,通過上機實驗,對理論知識的複習鞏固實踐,可以自己根據例題編寫設計簡單的程序來實現不同的功能,繪製出比較滿意的二維三維圖形,在實踐中找到樂趣。MATLAB是一個實用性很強,操作相對容易,比較完善的工具軟件,使用起來比較方便,通過操作可以很快看到結果,能夠清晰的感覺到成功與失敗。通過對MATLAB的數據的各種運算,矩陣的分析和處理,程序設計,繪圖,數值計算及符號運算的學習,掌握了MATLAB的實用方法。自我感覺學習matlab,與其說是學習一門軟件,更不如說是學習一門語言。用一種數理的語言描述現象,揭示表象下的規律。此外,我認爲matlab中的作圖功能很強大,不僅簡單的函數現象可以明確畫出,而且一些點狀物,甚至立體圖也可以畫出。大一上微積分的時候,老師曾經多次在課件中加入用matlab畫出的圖來。不論是一維二維三維等等,都能很好的畫出來。只要能編寫出函數式,在短短的幾秒之內,他就會呈現在你眼前。其實想要學習好一們語言,不能只靠老師,關鍵是自己。每個人內心深處都是有牴觸意識的,不可能把老師的所有都學到。學習這門語言,不光是學習一種語言和技能,更重要的是學習一種方法和思維。


附錄 本篇報告下載鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章