第一章html
Matlab的基本概念,名稱的來源,基本功能,幫助的使用方法java
1.基本概念和名稱來源:MATLAB [1] 是美國MathWorks公司出品的商業數學軟件,算法
用於算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分。編程
MATLAB是matrix&laboratory兩個詞的組合,意爲矩陣工廠(矩陣實驗室)數組
2.基本功能:數據結構
2.1數值計算和符號計算功能
MATLAB以矩陣做爲數據操做的基本單位,還提供了十分豐富的數值計算函數。編程語言
2.2繪圖功能,matlab提供了兩個層次的繪圖操做。一種是對圖形句柄,進行底層繪圖操做。另外一種是創建在低層繪圖操做之上的高層繪圖操做。函數
2.3編程語言
MATLAB具備程序結構控制、函數調用、數據結構、輸入輸出、面向對象等程序語言特徵,並且簡單易學、編程效率高工具
2.4MATLAB工具箱
MATLAB包含兩部份內容:基本部分和各類可選的工具箱。
MATLAB工具箱分爲兩大類:功能性工具箱和學科性工具箱。學習
3.幫助的使用方法
3.1 幫助命令
MATLAB幫助命令包括help命令和lookfor命令。
3.1.1 help命令
在MATLAB 命令窗口中直接輸入help命令將會顯示當前幫助系統中所包含的全部項目,即搜索路徑中全部的目錄名稱。一樣,能夠經過help加函數名來顯示該函數的幫助說明。
3.1.2 lookfor命令
help命令只搜索出那些關鍵字徹底匹配的結果,lookfor命令對搜索範圍內的M文件進行關鍵字搜索,條件比較寬鬆。
lookfor命令只對M文件的第一行進行關鍵字搜索。若在lookfor命令加上-all選項,則可對M文件進行全文搜索。
3.2 幫助窗口
進入幫助窗口能夠經過如下3種方法:
3.2.1 單擊MATLAB主窗口工具欄中的Help按鈕。
3.2.2 在命令窗口中輸入helpwin、helpdesk或doc。
3.2.3 選擇Help菜單中的「MATLAB Help」選項。
第二章
1.變量的命名規則(也是函數和文件的命名規則)
2.預約義變量:pi,ans,lasterr等等
Pi 圓周率π
Ans 最新計算結果的默認變量名
3.內存變量的管理:who,whos
直接在command window裏面打whos這個命令。就會把workspace裏面全部變量的 Name(變量名), Size(維數), Bytes(佔用字節數), Class(類別),都列出來。 具體看附圖。
圖轉:http://www.javashuo.com/article/p-ghuvowme-nc.html
4.內存變量的保存和恢復:
4.1變量保存
用save能夠保存變量。
save data1 表示保存工做空間全部的變量到data1.mat中
save data2 m 表將工做空間的m變量保存到data2.mat中,若是工做空間沒有m會報錯。
save data3 m n p v 表示將工做空間中的 m n p v 四個變量保存到data3.mat中,若是工做空間沒有這四個變量中的一個也會報錯。
4.2變量恢復
Load data3.mat 讀取環境變量,恢復變量。
5.矩陣的創建方法,定界符[ ],分隔符:空格或者逗號分隔同一行元素,分號分或回車隔不一樣行
Eg:
或
Eg:
6.利用已有矩陣創建大矩陣
6.1橫向拼接
6.2縱向拼接
7.冒號表達式和linspace函數
8.矩陣元素的引用:單元素,多元素(要使用冒號表達式,本質是用矩陣作下標)
Matlab中數組元素引用有三種方法
1
.下標法(subscripts)
2
.索引法(index)
3
.布爾法(Boolean)
A=
8
1
6
3
5
7
4
9
2
A(
2
:
3
,
3
:-
1
:
1
)表示引用數組中的
2
~
3
行,
3
~
1
列對應的元素
A(:,end)表示引用最後一列元素,「:」表示全部列或行,「end」表示最後一列或列,「end-n」表示倒數第n行或列
A(
1
,end-
1
)表示引用第
1
行倒數第
2
個元素
A([
2
1
3
3
],[
1
1
2
2
1
])表示引用按兩個向量引用指定的元素,即A中的第
2
,
1
,
3
,
3
行和第
1
,
1
,
2
,
2
,
1
列對應的元素
>>A=magic(
3
)
A =
8
1
6
3
5
7
4
9
2
>>A(
2
:
3
,
3
:-
1
:
1
)
ans =
7
5
3
2
9
4
>>A(:,end)
ans =
6
7
2
>>A(
1
,end-
1
)
ans =
1
>>A([
2
1
3
3
],[
1
1
2
2
1
])
ans =
3
3
5
5
3
8
8
1
1
8
4
4
9
9
4
4
4
9
9
4
>>A=magic(
5
)%括號中爲索引值
A =
17
(
1
)
24
(
6
)
1
(
11
)
8
(
16
)
15
(
21
)
23
(
2
)
5
(
7
)
7
(
12
)
14
(
17
)
16
(
22
)
4
(
3
)
6
(
8
)
13
(
13
)
20
(
18
)
22
(
23
)
10
(
4
)
12
(
9
)
19
(
14
)
21
(
19
)
3
(
24
)
11
(
5
)
18
(
10
)
25
(
15
)
2
(
20
)
9
(
25
)
>>A(
8
)
ans =
6
>>A([
1
10
5
2
2
1
3
])
ans =
17
18
11
23
23
17
4
>>A([
2
5
9
;
1
1
1
;
8
5
6
])
ans =
23
11
12
17
17
17
6
11
24
>>A=magic(
3
)%生成一個
3
*
3
的數組
A=
8
1
6
3
5
7
4
9
2
>>x=logical([
1
1
0
;
0
1
1
;
1
0
1
])%將
double
轉化爲
boolean
型數據
x =
1
1
0
0
1
1
1
0
1
>>A(x)%引用對應位置爲
1
的數據,返回列向量
ans =
8
4
1
5
7
2
>>x=A>
5
%是有了比較語句,返回布爾型數據,對應位置數據大於
5
的爲
1
,不然爲
0
x =
1
0
1
0
0
1
0
1
0
>>A(x)%返回大於A中大於
5
的元素,其實該命令能夠一次性執行A(A>
5
)或者find(A>
5
),前者返回具體元素,後者返回大於
5
的數據的索引值
ans =
8
9
6
7
>>A(A>
5
)%一次性執行上面的命令
ans =
8
9
6
7
>>indx=find(A>
5
)%查找A中對於
5
的元素,返回它們的索引(index)值,此時咱們能夠經過A(index)返回具體的元素
index =
1
6
7
8
參考 https://blog.csdn.net/love_wanling/article/details/77103708
9.矩陣的運算:
矩陣運算可參考ppt,或經過檢索查找(如下爲筆者舉出的兩例,但不只限):
https://jingyan.baidu.com/article/3c343ff7c867a50d36796360.html
https://jingyan.baidu.com/article/6766299799a99654d51b84a8.html
+-.*./ 同維矩陣對應元素比較
*/矩陣維數必須相容 注意左除和右除,誰在斜線下方誰求逆
1/1
10.運算優先級
優先級從高到低:
1. 圓括號()
2. 轉置(.')、共軛轉置(’)、乘方(.^)、矩陣乘方(^)
3. 一元加法(+)、一元減法(-)、取反(~)
4. 乘法(.*)、矩陣乘法(*)、右除(./)、 左除(.\)、 矩陣右除(/)、矩陣 左除(\)
5. 加法(+)、減法(-)、邏輯非(~)
6. 冒號運算符(:)
7. 小於、小於等於、大於、大於等於、等於、不等於
8. 逐邏輯運算與(&)
9. 逐邏輯運算或(|)
10. "避繞式"邏輯與(&&)
11. "避繞式"邏輯與(||)
11.經常使用函數length,sum,find
11.1size
獲取數組的行數和列數
11.2length
數組長度,即行數和列數中的較大值,至關於max(size(a))
11.3numel
返回元素總數
11.4 sum
a=sum(x);%列求和
a=sum(x,2);%行求和
a=sum(x(:));%矩陣求和
11.5 find
11.5.1 b=find(a),a是一個矩陣,查詢非零元素的位置,若是X是一個行向量,則返回一個行向量,
不然,返回一個列向量。若是X全是零元素或者是空數組,
則返回一個空數組,例子以下所示,也能夠用b=find(a>2),這句的意思是在a中找到比較2大的元素
11.5.2:
b=find(a,2),找出a中最早出現的2個不爲零的數,a是你所要找的矩陣,2參數是指數量所下圖
11.5.3 c=find(a,2,'last') 這句的意思是從最後一個非零元素起,找2個不爲零的元素
其餘等find函數用法,本貼再也不介紹。具體能夠參考https://jingyan.baidu.com/article/3c343ff71444890d3679635d.html
12. 4個取整函數的區別要會使用
12.1 Fix() (向零方向取整)
12.2 Round()(四捨五入,向最大的方向取整)
12.3 Floor() (向負無窮小取整)
12.4 Ceil (向正無窮大取整)
13. 關係運算和運算符,注意和c語言的區別(不等於~=而非!=),另外,MATLAB中關係或邏輯運算的參與方有矩陣時,表現爲矩陣中對應元素比較或者矩陣中每一個元素與標量比較,其運算結果爲矩陣
邏輯運算的的運算符,注意和c語言的區別(取反爲~),當矩陣參與到邏輯運算時,只有矩陣元素全爲一才爲真
第三章
3.1特殊矩陣:zeros,ones,eye,rand,randn,注意怎樣生成任意區間的均勻分佈和指定均值和方差的正態分佈,當心正態分佈的方差是個平方值,在公式中使用時要開方纔能做爲參數。
3.1 通用的特殊矩陣經常使用的產生通用特殊矩陣的函數有:
zeros:產生全0矩陣(零矩陣)。
ones:產生全1矩陣(幺矩陣)。
eye:產生單位矩陣。
rand:產生0~1間均勻分佈的隨機矩陣。
randn:產生均值爲0,方差爲1的標準正態分佈隨機矩陣。
例3.1.1 分別創建×三、3×2和與矩陣A一樣大小的零矩陣。
(1) 創建一個3×3零矩陣。
zeros(3)
(2) 創建一個3×2零矩陣。
zeros(3,2)
(3) 設A爲2×3矩陣,則能夠用zeros(size(A))創建一個與矩陣A一樣大小零矩陣。
A=[1 2 3;4 5 6]; %產生一個2×3階矩陣A
zeros(size(A)) %產生一個與矩陣A一樣大小的零矩陣
例3.1.2 創建隨機矩陣:
(1) 在區間[20,50]內均勻分佈的5階隨機矩陣。
(2) 均值爲0.六、方差爲0.1的5階正態分佈隨機矩陣。
命令以下:
x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
此外,經常使用的函數還有reshape(A,m,n),它在矩陣總元素保持不變的前提下,將矩陣A從新排成m×n的二維矩陣。
3.2 專門矩陣:幻方陣,範德蒙陣,希爾伯特陣,伴隨陣,帕斯卡陣等
3.2.1 魔方矩陣
魔方矩陣有一個有趣的性質,其每行、每列及兩條對角線上的元素和都相等。對於n階魔方陣,其元素由1,2,3,…,n2共n2個整數組成。MATLAB提供了求魔方矩陣的函數magic(n),其功能是生成一個n階魔方陣。
例3.2.1 將101~125等25個數填入一個5行5列的表格中,使其每行每列及對角線的和均爲565。
M=100+magic(5)
3.2.2 範得蒙矩陣
範得蒙(Vandermonde)矩陣最後一列全爲1,倒數第二列爲一個指定的向量,其餘各列是其後列與倒數第二列的點乘積。能夠用一個指定向量生成一個範得蒙矩陣。在MATLAB中,函數vander(V)生成以向量V爲基礎向量的範得蒙矩陣。例如,A=vander([1;2;3;5])便可獲得上述範得蒙矩陣。
3.2.3 希爾伯特矩陣
在MATLAB中,生成希爾伯特矩陣的函數是hilb(n)。
使用通常方法求逆會由於原始數據的微小擾動而產生不可靠的計算結果。MATLAB中,有一個專門求希爾伯特矩陣的逆的函數invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。
例3.2.3 求4階希爾伯特矩陣及其逆矩陣。
命令以下:
format rat %以有理形式輸出
H=hilb(4)
H=invhilb(4)
3.2.4 託普利茲矩陣
託普利茲(Toeplitz)矩陣除第一行第一列外,其餘每一個元素都與左上角的元素相同。生成託普利茲矩陣的函數是toeplitz(x,y),它生成一個以x爲第一列,y爲第一行的託普利茲矩陣。這裏x, y均爲向量,二者沒必要等長。toeplitz(x)用向量x生成一個對稱的託普利茲矩陣。
3.2.4例
T=toeplitz(1:6)
3.2.5伴隨矩陣
MATLAB生成伴隨矩陣的函數是compan(p),其中p是一個多項式的係數向量,高次冪係數排在前,低次冪排在後。例如,爲了求多項式的x3-7x+6的伴隨矩陣,可以使用命令:
p=[1,0,-7,6];
compan(p)
3.2.6帕斯卡矩陣
咱們知道,二次項(x+y)n展開後的係數隨n的增大組成一個三角形表,稱爲楊輝三角形。由楊輝三角形表組成的矩陣稱爲帕斯卡(Pascal)矩陣。
函數pascal(n)生成一個n階帕斯卡矩陣。
例3.2.6 求(x+y)5的展開式。
在MATLAB命令窗口,輸入命令:
pascal(6)
矩陣次對角線上的元素1,5,10,10,5,1即爲展開式的係數。
3.3三角陣的生成和從已知矩陣中提取三角陣和對角陣
1.對角陣
只有對角線上有非0元素的矩陣稱爲對角矩陣,對角線上的元素相等的對角矩陣稱爲數量矩陣,對角線上的元素都爲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的元素。
diag(V)函數也有另外一種形式diag(V,k),其功能是產生一個n×n(n=m+|k|)對角陣,其第k條對角線的元素即爲向量V的元素。
2.三角陣
三角陣又進一步分爲上三角陣和下三角陣,所謂上三角陣,即矩陣的對角線如下的元素全爲0的一種矩陣,而下三角陣則是對角線以上的元素全爲0的一種矩陣。
(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)徹底相同。
3.4矩陣的旋轉,轉置是旋轉的特例
1.矩陣的轉置
轉置運算符是單撇號(’)。
2.矩陣的旋轉
利用函數rot90(A,k)將矩陣A旋轉90º的k倍,當k爲1時可省略。
3.矩陣的左右翻轉
對矩陣實施左右翻轉是將原矩陣的第一列和最後一列調換,第二列和倒數第二列調換,…,
依次類推。MATLAB對矩陣A實施左右翻轉的函數是fliplr(A)。
4.矩陣的上下翻轉
MATLAB對矩陣A實施上下翻轉的函數是flipud(A)。
3.5矩陣求逆及其應用(解方程組)
3.5.1 矩陣的逆與僞逆
對於一個方陣A,若是存在一個與其同階的方陣B,使得:
A·B=B·A=I (I爲單位矩陣)
則稱B爲A的逆矩陣,固然,A也是B的逆矩陣。
求一個矩陣的逆是一件很是煩瑣的工做,容易出錯,但在MATLAB中,求一個矩陣的逆很是容易。求方陣A的逆矩陣可調用函數inv(A)。
在線性方程組Ax=b兩邊各左乘A-1,有
A-1Ax=A-1b
因爲A-1A=I,故得
x=A-1b
例 用求逆矩陣的方法解線性方程組。
命令以下:
A=[1,2,3;1,4,9;1,8,27];
b=[5,-2,6]';
x=inv(A)*b
也能夠運用左除運算符「\」求解線性代數方程組
3.6 矩陣的秩與跡
1.矩陣的秩
矩陣線性無關的行數與列數稱爲矩陣的秩。在MATLAB中,求矩陣秩的函數是rank(A)。
2.矩陣的跡
矩陣的跡等於矩陣的對角線元素之和,也等於矩陣的特徵值之和。在MATLAB中,求矩陣的跡的函數是trace(A)。
3.7矩陣的特徵值和特徵向量及其應用(求解高階方程)
在MATLAB中,計算矩陣A的特徵值和特徵向量的函數是eig(A),經常使用的調用格式有3種:
(1) E=eig(A):求矩陣A的所有特徵值,構成向量E。
第四章
4.1M文件的分類和區別
用MATLAB語言編寫的程序,稱爲M文件。
M文件能夠根據調用方式的不一樣分爲兩類:
命令文件(Script File)和函數文件(Function File)。
例4.1 創建一個命令文件將變量a,b的值互換,而後運行該命令文件。
程序1:
首先創建命令文件並以文件名exch.m存盤:
clear;
a=1:10;
b=[11,12,13,14;15,16,17,18];
c=a;a=b;b=c;
a
b
而後在MATLAB的命令窗口中輸入exch,將會執行該命令文件。
程序2:
首先創建函數文件fexch.m:
function [a,b]=exch(a,b)
c=a;a=b;b=c;
而後在MATLAB的命令窗口調用該函數文件:
clear;
x=1:10;
y=[11,12,13,14;15,16,17,18];
[x,y]=fexch(x,y)
4.2輸入輸出語句
若是在input函數調用時採用's'選項,則容許用戶輸入一個字符串。例如,想輸入一我的的姓名,可採用命令:
xm=input('What''s your name?','s');
MATLAB提供的命令窗口輸出函數主要有disp函數,其調用格式爲
disp(輸出項)
4.3控制不輸出和註釋
註釋%%
4.4選擇結構:單分支,多分支,注意end的使用,switch中case語句裏面若是使用多個數作一個條件應將其寫成{n1,n2,n3……,n5}的形式,若是用冒號表達式生產n1~n5,須要用num2cell進行轉換,不能用case {n1:n5}的形式,應該是:case num2cell(n1:n5)
4.4.1if語句
在MATLAB中,if語句有3種格式。
(1) 單分支if語句:
if 條件
語句組
end
(2) 雙分支if語句:
if 條件
語句組1
else
語句組2
end
當條件成立時,執行語句組1,不然執行語句組2,語句組1或語句組2執行後,再執行if語句的後繼語句。
例如:x=input('請輸入x的值:');
if x==10
y=cos(x+1)+sqrt(x*x+1);
else
y=x*sqrt(x+sqrt(x));
end
y
注意條件的邊界
商品打折,百分五分轉換
分段函數的兩種構造:一種利用邏輯表達式和點運算構造,一種利用矩陣增加實現
Try catch條件語句的應用
循環結構,注意for經常使用冒號表達式作循環條件控制
For循環和向量點運算的區別和聯繫
While循環和break continue語句
函數的定義
形參實參怎樣傳遞數據,怎樣返回值,怎樣返回多個值,輸入參數的數量和輸出參數的數量nargin,nargout
全局變量的使用
第五章
基本繪圖plot(x,y)
用plot繪製多個圖
矩陣繪圖
用多條plot語句繪圖,要使用hold on使多個圖同時出如今畫面上
Plotyy,在同一座標繪製雙圖,其優點,顏色,線性,座標軸,
繪圖選項,圖注和座標控制
Loglog,bar,stem,stairs
全部的實驗