基本介紹
MATLAB(Matrix Laboratory)是MathWorks公司開發的科學與工程計算的商業化的數學運算工具,能有效的進行復雜 的數學運算和複雜的科學計算。 主要適用於數值計算,特別是在矩陣運算和數據圖形化方面功能強大,但不適合編寫文字處理程序。 在工程領域,MATLAB程序正逐漸取代傳統的計算機語言,成爲工程師和科學家的標準運算工具。
MATLAB功能
1. 數值計算和符號計算功能
a=[2,3,-1;3,-5,3;6,3,-8];
b=[7;8;9];
x=inv(a)*b
syms x1 x2 x3
[x1,x2,x3]=solve(2*x1+3*x2-x3-7,3*x1-5*x2+3*x38,6*x1+3*x2-8*x3-9)
2. 繪圖功能
x=-20:0.1:20;
plot(x,300*sin(x)./x,':',x,x.^2);
3. 程序設計語言功能
MATLAB是解釋性語言,程序執行速度較慢,而且不能 脫離MATLAB環境而獨立運行。MathWorks公司提供了將 MATLAB源程序編譯爲獨立於MATLAB集成環境運行的 EXE文件以及將MATLAB程序轉化爲C語言程序的編譯器。
4. 擴展功能【工具包】
MATLAB包含兩部分內容:基本部分和各種可選的工 具箱。基本部分構成了MATLAB的核心內容,也是使用和構造工 具箱的基礎 ; 工具箱擴展了MATLAB的功能,包括:
- 功能性工具箱:主要用來擴充其符號計算功能、可視建模仿 真功能、文字處理功能等。
- 學科性工具箱:專業性比較強,如控制系統工具箱、信號處理工具箱、神經網絡工具箱、最優化工具箱、金融工具箱、 統計學工具箱等。
matlab基本知識儲備
一般來說,一個命令行輸入一條命令,命令行以回車結束。但一個命 令行也可以輸入若干條命令,各命令之間以逗號分隔,若前一命令後帶 有分號,則逗號可以省略。
如果一個命令行很長,一個物理行之內寫不下,可以在第1個物理行之 後加上3個小黑點並按下回車鍵,然後接着下一個物理行繼續寫命令的其 他部分。3個小黑點稱爲續行符,即把下面的物理行看作該行的邏輯繼續。
工作空間(Workspace) 是MATLAB用於存儲各種 變量和結果的內存空間。
當前目錄窗口 當前目錄(Current Directory)是指MATLAB 運行時的工作目錄,只有在當前目錄或搜索路徑下的文件、函數纔可以被運 行或調用。如果沒有特殊指明,數據文件也將存放 在當前目錄下。
命令歷史窗口 自動保留自安裝起所有用過的命令的歷史記錄, 並且還標明瞭使用時間,從而方便用戶查詢。而且, 通過雙擊命令可進行歷史命令的再運行
搜索路徑 MATLAB的文件是通過不同的路徑進行組織和管理的。當用戶在命 令窗口輸入一條命令後,MATLAB將按照下列順序搜索所輸入的命令。
● 檢查該命令是不是一個變量。
● 檢查該命令是不是一個內部函數。
● 檢查該命令是否爲當前目錄下的M文件
● 檢查該命令是否爲MATLAB搜索路徑中其他目錄下的M文件。
設置搜索路徑 :
(1)用path命令設置搜索路徑 例如,將用戶目錄c:\mydir加到搜索路徑下: path(path,' c:\mydir ')
(2)用對話框設置搜索路徑 在MATLAB的File菜單中選擇Set Path命令或在命令窗口執行 pathtool命令
幫助命令
help命令 help命令是查詢函數語法的最基本方法,查詢信息直接 顯示在命令窗口。在命令窗口中直接輸入help命令將會顯示 當前幫助系統中所包含的所有項目,即搜索路徑中所有的目 錄名稱。同樣,可以通過help加函數名來顯示該函數的幫助說明。 例如,爲了顯示magic函數的使用方法與功能 help magic
lookfor命令 lookfor命令可以查詢根據用戶提供的關鍵字搜索相關的 函數。例如,輸入命令lookfor fourier
MATLAB的變量和數據操作
1.預定義變量
預定義變量 | 解釋 |
---|---|
eps | 機器零閾值 |
ans | 計算結果的默認賦值變量 |
pi | 圓周率 |
i,j | 虛數單位 |
inf, Inf | 無窮大, 1/0的結果 |
NaN,nan | 非數值 0/0 ; inf/inf |
nargin | 函數輸入參數的個數 |
nargout | 函數輸出參數的個數 |
realmax | 最大正實數 |
realmin | 最小正實數 |
lasterr | 存放最新錯誤信息 |
lastwarn | 存放最新警告信息 |
2.變量賦值與命名
MATLAB賦值語句有兩種格式:
var=expression;
expression; // 該方式將會將值賦於 預定義變量 ans
在MATLAB 中,變量名是以字母開頭,後接字母、數字或下 畫線的字符序列,最多63個字符。例如x、x_1、xy12 。在MATLAB中,變量名區分字母的大小寫。例如addr、Addr 和ADDR表示3個不同的變量。在語句的最後加分號,僅執行賦值操作,不再顯示運算的結果, 註釋以%開頭。
3. 變量管理
who
和whos
顯示在MATLAB工作空間中已經駐留的變量名,清單。whos
在給出駐留變量名的同時,還給出它們的維數、所佔字 節數以及變量的類型。clear
用來刪除MATLAB工作空間中的變量,MATLAB工作空間窗口專門用於內存變量的管理。
4. 內存變量文件
利用MAT文件可以把當前MATLAB工作空間中的一些有用 變量長久地保留下來。MAT文件是MATLAB保存數據的一種標準格式二進制文件, 擴展名是.mat。 MAT文件的生成和裝入 save filename [var_list] [-append][-ascii]
以及 load filename [var_list] [-ascii]
。
5. 變量輸出格式
用format
命令設置數據輸出格式 ,注意:format
命令隻影響數據輸出格式,而不影響數據的計算和存儲。 例如輸入爲:x=[4/3 1.2345e-6]
,在各種不同的格式符下的輸出爲:
- 短格式(short):1.3333 0.0000
- 長格式(long):1.33333333333333 0.00000123450000
- 十六進制格式(hex):3ff5555555555555 3eb4b6231abfd271
- +格式(+):++
MATLAB矩陣基本操作
矩陣生成方式
- 直接輸入
A=[1,2,3;4,5,6;7,8,9];
A = 1 2 3 4 5 6 7 8 9
- 利用M文件生成
對於比較大且比較複雜的矩陣,可以爲它專門建立一個M 文件,格式爲 .M文件。實例:
(1)啓動有關文本編輯程序或MATLAB的M-file編輯器(見 第2章),並輸入待建矩陣: mydata=[1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9; 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9; 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9];
(2)把輸入的內容存盤(設文件名爲matfund.m)。
(3)在MATLAB命令窗口中輸入matfund,即運行該M文 件,就會自動建立一個名爲mydata的矩陣,可供以後使用
利用數據文件生成
用戶能夠通過load命令,將外部數據文件中的內容調入到 工作空間中創建矩陣,外部文件的擴展名爲.dat例如,利用文本編輯器創建一個數據文件test.dat,包含下 列數據:2 4 6 8 6 ;3 5 6 7 3 ;2 5 1 2 5
在命令窗口輸入:load test.dat
即可以創建一個 test變量。擴展矩陣
大矩陣可由已建好的小矩陣拼接而成。例如:
A=[1,2,3;4,5,6;7,8,9];
B=[11:13;14:16;17:19];
C=[A,B;B,A]
矩陣操作
下標、序號
下標很好理解,和其他編程語言的數組一樣,例如對於一個4*6矩陣 A ,那麼第二行第三列的元素值就是
A(2, 3)
- 序號是指matlab矩陣的內存順序號,上面的例子對應元素則應該是 A(10)
這裏引入幾個相關常用函數
size(A)//返回矩陣的行數和列數
length(A)//返回行數和列數中較大者
// 下標和序號的轉化
sub2ind(shape,raw_num,col_num)
ind2sub(shape,index)
- 矩陣拆分
矩陣拆分可採用冒號表達式,和python的語法非常相似(這裏暫不介紹不同之處)舉兩個例子看看吧:
// 刪除 2 4 列
>>A=[1 2 3 4 5 6;7 8 9 10 11 12;13 14 15 16 17 18];
>>A(:,[2 4])=[ ]
// 將A變爲列向量,排列順序按矩陣物理結構順序排列
>>B=A(:)
算術運算
- +(加)
- −(減)
- /(右除)
- \(左除)
- ^(乘方)
//這個運算要求矩陣是方陣
這裏,當然是重點介紹一下左除右除:
3/4 //右除是咱們其他語言通用除法符號
4\3
//結果,這就是規律
ans =
0.7500
ans =
0.7500
// 對於矩陣 Ax=B, 則
x = inv(A)*B
or x = A\B
特別注意一點,對於標量 a/b==b\a, 而一般對於矩陣 A/B ~= B\A
關係運算
- <(小於)
- <=(小於或等於)
- >(大於)
- >=(大於或等於)
- = =(等於)
- ~=(不等於)
當參與比較的量是兩個維數相同的矩陣時,比 較是對兩矩陣相同位置的元素按標量關係運算規則 逐個進行,並給出元素的比較結果。最終的關係運 算的結果是一個維數與原矩陣相同的矩陣,它的元 素由0或1組成。
當參與比較的一個是標量,而另一個是矩陣時, 則把標量與矩陣的每一個元素按標量關係運算規則 逐個比較,並給出元素比較結果。最終的運算結果 是一個維數與矩陣相同的矩陣,它的元素由0或1組 成。
邏輯運算
邏輯運算符:
- &(與)
- |(或)
- ~ (非)
邏輯運算函數:
- and(a,b)
- or(a,b)
- not(a)
- xor(a,b)
設參與邏輯運算的是兩個標量a和b,那麼,邏輯運算符和邏輯運算函數的用法和其他編程語言一樣,不做說明。
若參與邏輯運算的是兩個同維矩陣,那麼運算將對矩 陣相同位置上的元素按標量規則逐個進行。最終運算結果是 一個與原矩陣同維的矩陣,其元素由1或0組成。
若參與邏輯運算的一個是標量,一個是矩陣, 那麼運算將在標量與矩陣中的每個元素之間按標量 規則逐個進行。最終運算結果是一個與矩陣同維的 矩陣,其元素由1或0組成
預定義變量 | 解釋 |
---|---|
all | 所有元素非0則返回1 |
any | 任意一個元素非0返回1 |
exist | 檢查變量是否在工作空間,存在則返回1 |
find | 找出非零元素的位置(按物理結構尋找) |
常用數學函數
預定義變量 | 解釋 |
---|---|
sin/cos/tan | 三角函數 |
asin/acos/atan | 反三角函數 |
sqrt | 平方根函數 |
log | 自然對數函數 |
log10 | 常用對數函數 |
log2 | 常用對數函數 |
exp | 自然指數函數 |
abs | 絕對值函數 |
rem | 求餘數或模運算 |
mod | 模除求餘數 |
fix/floor/ceil/round | 截斷函數 |
sign | 符號函數 |
gcd | 最大公因子 |
lcm | 最小公倍數 |
字符串
MATLAB將一個字符串當作一個行向量,每個元素對 應一個字符,其標識方法和數值向量相同。 多行字符串要求各行字符數要相等 。字符串是以ASCII形式存儲的,abs和double函數都可以用來獲取字符串矩陣所對應的ASCII數值矩陣;相 反,char函數可以把ASCII矩陣轉換爲字符串矩陣。
若字符串中的字符含有單撇號,則該單撇號字符應用 兩個單撇號來表示,如disp('It''s a book.)'
可以用字符串向量的形式連接多個字符串,即用中括號括起來,如
>>x=8;
>>y=10;
>>disp([num2str(x),' + ',num2str(y),' = ',num2str(x+y)])