全世界數超過百萬的工程師和科學家們使用 MATLAB 來分析和設計改變世界的系統和產品。MATLAB 應用於汽車安全系統、宇宙飛船、健康監測設備、智能電網及LTE蜂窩網絡等領域。它被用於機器學習、信號處理、圖像處理、計算機視覺、網絡通訊、數值計算、控制設計、機器人技術等等。html
基於矩陣的 MATLAB 語言是世界上最天然的表達數學計算的方法。內置的圖形顯示功能使咱們更容易將數據可視化並從中獲得新認識。一個強大的內置工具箱可讓您快速上手您的領域所必需的算法。MATLAB 各類功能須要咱們去實踐、探索和發現。這些 MATLAB 工具和功能都通過嚴格的測試,還能夠協同工做。web
MATLAB 將您的想法呈如今屏幕上。您能夠在更大的數據集合上運行分析,並擴展到數據集羣和雲平臺。MATLAB 代碼能夠與其餘語言集成,幫助您在網絡、企業和生產系統中部署算法和應用程序。算法
當您啓動 MATLAB 時,桌面顯示爲默認佈局。默認界面包括如下面板:編程
當你使用 MATLAB 時,您能夠發出建立變量和調用函數的命令。例如,經過在命令行輸入這個語句建立一個名爲 a 的變量:數組
a = 1
MATLAB 將變量 a 添加到工做區並在命令窗口中顯示結果。瀏覽器
a = 1
建立更多的變量。安全
b = 2 b = 2 c = a + b c = 3 d = cos(a) d = 0.5403
當不指定輸出變量時,MATLAB 使用變量 ans (answer的縮寫)存儲計算結果。網絡
sin(a) ans = 0.8415
若是以英文分號(;)結束語句,MATLAB 會執行計算,但會在命令窗口中隱藏對應的輸出值。app
e = a * b;
您能夠經過按向上箭頭鍵(↑)和向下箭頭鍵(↓)來撤銷以前的命令。在空命令行或鍵入命令的第一個字符後按箭頭鍵。例如,要撤銷命令 b = 2,先鍵入 b,而後按向上箭頭鍵。機器學習
MATLAB 是 「矩陣實驗室」 的縮寫。雖然其餘編程語言大多一次處理一個數,但 MATLAB 主要用於對整個矩陣和數組進行操做。
不管數據類型如何,全部 MATLAB 變量都是多維數組。矩陣是線性代數中經常使用的二維數組。
若要在一行中建立包含四個元素的數組,請使用英文逗號(,)或空格分隔這些元素。
a = [1 2 3 4] a = 1×4 1 2 3 4
這種類型的數組稱爲行向量。
若要建立具備多行的矩陣,請用分號分隔行。
a = [1 2 3; 4 5 6; 7 8 10] a = 3×3 1 2 3 4 5 6 7 8 10
建立矩陣的另外一種方法是使用函數,如產生一組 一、0 或隨機數。例如,建立一個由 0 組成的 5×1 列向量。
z = zeros(5,1) z = 5×1 0 0 0 0 0
MATLAB 容許您使用一個算術運算符或函數處理矩陣中的全部值。
a + 10 ans = 3×3 11 12 13 14 15 16 17 18 20 sin(a) ans = 3×3 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 0.9894 -0.5440
若要轉置矩陣,請使用單引號(’):
a' ans = 3×3 1 4 7 2 5 8 3 6 10
您可使用 * 運算符執行標準矩陣乘法,它計算行和列之間的內積。例如,若是一個矩陣乘以它的逆矩陣返回單位矩陣:
p = a*inv(a) p = 3×3 1.0000 0 -0.0000 0 1.0000 0 0 0 1.0000
注意,p 不是一個整數值矩陣。MATLAB 將數字存儲爲浮點值,算術運算對實際值與其浮點表示之間的細微差異很敏感。您可使用 format 命令顯示更高的十進制小數位數:
format long p = a*inv(a) p = 3×3 1.000000000000000 0 -0.000000000000000 0 1.000000000000000 0 0 0 0.999999999999998
使用如下命令將顯示更短的數據格式
format short
數據格式隻影響數字的顯示,而不影響 MATLAB 對結果的運算或保存。
要執行元素乘而不是矩陣乘,請使用 .* 運算符:
p = a.*a p = 3×3 1 4 9 16 25 36 49 64 100
用於乘法、除法和冪運算的矩陣運算符都有一個對應的數組運算符,該數組運算符按元素順序操做。例如,取 a 的每個元素的三次方:
a.^3 ans = 3×3 1 8 27 64 125 216 343 512 1000
數組的拼合是將數組拼接起來以生成更大的數組的過程。實際上,您經過拼合第一個數組的各個元素來構建一個數組。拼合操做符是一對方括號 [ ] 。
A = [a,a] A = 3×6 1 2 3 1 2 3 4 5 6 4 5 6 7 8 10 7 8 10
使用逗號鏈接相鄰的數組稱爲水平鏈接。每一個數組必須具備相同的行數。相似地,當數組具備相同數量的列數時,可使用分號垂直鏈接。
A = [a; a] A = 6×3 1 2 3 4 5 6 7 8 10 1 2 3 4 5 6 7 8 10
複數有實部和虛部,其中虛部是 -1 的平方根。
sqrt(-1) ans = 0.0000 + 1.0000i
要表示複數的虛部,能夠用 i 或 j。
c = [3+4i, 4+3j; -i, 10j] c = 2×2 complex 3.0000 + 4.0000i 4.0000 + 3.0000i 0.0000 - 1.0000i 0.0000 +10.0000i
MATLAB 中的每一個變量都是一個能夠容納許多數字的數組。當您想訪問數組中選定的元素時,請使用索引。
4×4 的方陣 A:
A = magic(4) A = 4×4 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
有兩種方法能夠引用數組中的特定元素。最多見的方法是指定行和列下標,例如:
A(4,2) ans = 14
不太常見但有時有用的方法是使用一個下標,按順序遍歷每一列:
A(8) ans = 14
使用單個下標來引用數組中的特定元素稱爲線性索引。
若是試圖引用賦值語句右側數組外的元素,MATLAB會提示錯誤。
test = A(4,5)
由於索引超過矩陣的維數。
然而,在賦值語句的左側,您能夠指定當前維度以外的元素。這樣,數組的會增長到須要的行數或列數。
A(4,5) = 17 A = 4×5 16 2 3 13 0 5 11 10 8 0 9 7 6 12 0 4 14 15 1 17
要引用數組的多個元素,可使用冒號操做符,它容許指定形式爲 start:end。例如,列出 A 的第 1 行和第 2 列的元素:
A(1:3,2) ans = 3×1 2 11 7
僅冒號(沒有起始值 start 或結束值 end)是指定該維度中的全部元素。例如,選擇 A 的第三行中的全部列:
A(3,:) ans = 1×5 9 7 6 12 0
冒號運算符還容許您使用更通用的形式 start:step:end 建立一個等間距的值向量。
B = 0:10:100 B = 1×11 0 10 20 30 40 50 60 70 80 90 100
若是省略中間步驟,如 start:end,MATLAB 使用默認的步驟值 1。
工做區包含您在 MATLAB 中建立或者從數據塊或其餘程序導入到 MATLAB 中的變量。例如,這些語句在工做區中建立變量 A 和 B。
A = magic(4); B = rand(3,5,2);
您可使用 whos 查看工做區的內容。
whos Name Size Bytes Class Attributes A 4x4 128 double B 3x5x2 240 double
這些變量也出如今桌面上的 Workspace 窗格中。
退出 MATLAB 後,工做區變量不會持久存在。用 save 命令能夠保存您的數據,以便稍後使用。
save myfile.mat
保存保存當前工做文件夾中的工做區,保存在一個壓縮的文件中,擴展名爲 .mat,文件名爲 MAT-file。
要清除工做區中的全部變量,請使用 clear 命令。
使用 load 命令將數據從 MAT-file 文件中恢復到工做區。
load myfile.mat
處理文本時,將字符序列括在雙引號中。你能夠將文本分配給變量。
t = "Hello, world";
若是文本包含雙引號,請在變量的定義中使用兩個雙引號。
q = "Something ""quoted"" and something else." q = "Something "quoted" and something else. "
t 和 q 是數組,就像全部 MATLAB 變量同樣。它們的類或數據類型是 string。
whos t Name Size Bytes Class Attributes t 1x1 174 string
注意:在R2017a中引入了使用雙引號建立字符串數組。若是使用較早的版本,請建立字符數組。有關詳細信息,請參見「字符數組中的數據」一節。
若要將文本添加到字符串末尾,請使用加號操做符 +。
f = 71; c = (f-32)/1.8; tempText = "Temperature is " + c + "C" tempText = "Temperature is 21.6667C"
與數字數組相似,字符串數組能夠有多個元素。使用 strlength 函數查找數組中每一個字符串的長度。
A = ["a","bb","ccc"; "dddd","eeeeee","fffffff"] A = 2×3 string array "a" "bb" "ccc" "dddd" "eeeeee" "fffffff" strlength(A) ans = 1 2 3 4 6 7
有時字符表示與文本不對應的數據,如 DNA 序列。您能夠將這種類型的數據存儲在字符數組中,該數組具備數據類型 char。
字符數組使用單引號。
seq = 'GCTAGAATCC'; whos seq Name Size Bytes Class Attributes seq 1x10 20 char
數組的每一個元素都包含一個字符。
seq(4) ans = 'A'
用方括號鏈接字符數組,就像鏈接數字數組同樣。
seq2 = [seq 'ATTAGAAACC'] seq2 = 'GCTAGAATCCATTAGAAACC'
字符數組在引入字符串數組以前編寫的程序中很常見。全部接受字符串數據的 MATLAB 函數也接受 char 數據,反之亦然。
MATLAB 提供了大量執行計算任務的函數。
函數至關於其餘編程語言中的子程序或方法。
要調用函數,如 max,將其輸入參數括在括號中:
A = [1 3 5]; max(A) ans = 5
若是有多個輸入參數,請用逗號分隔:
B = [10 6 4]; max(A,B) ans = 1×3 10 6 5
經過將函數賦值給一個變量,返回函數的輸出:
maxA = max(A) maxA = 5
當有多個輸出參數時,用方括號括起來:
[maxA,location] = max(A) maxA = 5 location = 3
將任何字符輸入用單引號括起來:
disp('hello world') hello world
若要調用不須要任何輸入且不返回任何輸出的函數,只需鍵入函數名:
clc
clc 函數用於清除命令窗口。
要建立二維曲線圖,請使用 plot 函數。例如,繪製正弦函數的值從 0 到 2π :
x = 0:pi/100:2*pi; y = sin(x); plot(x,y)
您能夠命名這些軸並添加標題。
xlabel('x') ylabel('sin(x)') title('Plot of the Sine Function')
經過向 plot 函數添加第三個輸入參數,可使用紅色虛線繪製相同的變量。
plot(x,y,'r--')
’r–’ 是一種指定的曲線類型。每種指定類型能夠包含行顏色、樣式和標記。標記是註釋在每一個繪製的數據點上的符號,例如一個 + ,一個 o 或者一個 ***** 等符號。例如,‘g:*’ 說明須要顯示一條帶 * 標記的虛線。
請注意,您爲第一張圖形編寫的標題和標籤已不在當前 figure 窗口中。MATLAB 會在每次調用繪圖函數、重置座標軸和其餘元素來準備新繪圖時清除 figure。
若要向現有 figure 添加圖形,請使用 hold on命令。在使用 hold off 命令或關閉窗口以前,全部繪圖將顯示在當前 figure 窗口中。
x = 0:pi/100:2*pi; y = sin(x); plot(x,y) hold on y2 = cos(x); plot(x,y2,':') legend('sin','cos') hold off
三維圖一般顯示由兩個變量組成的函數 z = f(x,y) 所繪製的曲面。
要計算 z 的值,首先使用 meshgrid 在函數的定義域上標記一系列 (x,y) 點。
[X,Y] = meshgrid(-2:.2:2); Z = X .* exp(-X.^2 - Y.^2);
而後,擬合出一個曲面圖形。
surf(X,Y,Z)
surf 函數和與之一塊兒使用的 mesh 函數用於在三維空間顯示曲面。
surf 函數用於彩色顯示出鏈接線和表面。
mesh 函數用於產生表面的線框,而且只標記的點之間的連線線框着色。
您可使用 subplot 函數在同一個窗口的不一樣子區域中顯示多個繪圖。
subplot 函數的前兩個參數表示每一行和每一列中的圖的數量。第三個參數指對應的第幾個圖處於活動狀態,便可編輯的狀態。例如,在 figure 窗口內的 2×2 網格中建立四幅圖。
t = 0:pi/10:2*pi; [X,Y,Z] = cylinder(4*cos(t)); subplot(2,2,1); mesh(X); title('X'); subplot(2,2,2); mesh(Y); title('Y'); subplot(2,2,3); mesh(Z); title('Z'); subplot(2,2,4); mesh(X,Y,Z); title('X,Y,Z');
最簡單的 MATLAB 程序類型稱爲腳本。腳本是一個包含屢次使用 MATLAB 命令行和函數調用的文件。您能夠經過在命令行中鍵入腳本的名稱來運行腳本。
要建立腳本,請使用 edit 命令,
edit mysphere
這個命令打開一個名爲 mysphere.m 的空文件。輸入一些代碼,能夠建立一個單位球面,半徑爲兩個單位長度,而後繪製結果:
[x,y,z] = sphere; r = 2; surf(x*r,y*r,z*r) axis equal
接下來,添加計算球體表面積和體積的代碼:
A = 4*pi*r^2; V = (4/3)*pi*r^3;
在您編寫代碼的時候,添加解釋代碼的註釋是個很好的習慣。
註釋幫助其餘人理解您的代碼,而且能夠幫助您在之後看到這些代碼的時候能快速的回憶起來。在 MATLAB 中使用百分號 (%) 添加註釋。
% 建立並繪製一個半徑爲 r 的球體。 [x,y,z] = sphere; % 建立一個單位球體。 r = 2; surf(x*r,y*r,z*r) % 調整每一個維度和圖表。 axis equal % 每一個軸使用相同的比例。 % 求表面積和體積。 A = 4*pi*r^2; V = (4/3)*pi*r^3;
將這份文件保存在當前文件夾中。若是要運行腳本,請在命令行中鍵入它的名稱:
mysphere
您還可使用編輯器 Editor 中的 run 按鈕來運行腳本。
您能夠在 live scripts 中使用格式化選項來加強代碼,而不是用純文本的方式編寫代碼和註釋。實時腳本容許您查看代碼和輸出並與之交互,還能夠包含格式化的文本、方程式和圖像。
例如,經過選擇 Save As 並將文件類型更改成 MATLAB 實時代碼文件 (*.mlx), mysphere 此時便轉換爲實時腳本。而後,用格式化的文本替換代碼註釋。例如:
若要添加方程式,請點擊 Insert 選項卡上的 Equation 選項。
若要新建一個實時腳本,請使用 edit 命令,並在文件名中添加 .mlx 擴展名:
edit newfile.mxl
您能夠在任何一個腳本中定義代碼區段用於編寫循環語句或條件語句。循環語句使用關鍵字 for 或 while ,條件語句使用關鍵字 if 或 switch。
循環對於建立序列頗有用。例如,建立一個名爲 fibseq 的腳本,它使用 for 循環來計算斐波那契數列的第一個100個數字。在這個序列中,第一個數字是1,後面的每一個數字是前兩個數字的和,遞推公式:
N = 100; f(1) = 1; f(2) = 1; for n = 3:N f(n) = f(n-1) + f(n-2); end f(1:10)
運行腳本時,for 語句定義一個名爲 n 的計數器,該計數器從 3 開始。而後,循環語句重複地給 f(n) 賦值,每執行一次循環,n 增長 1,直到達到 100。腳本中的最後一個命令 f(1:10) 顯示了 f 的前10個元素。
ans = 1 1 2 3 5 8 13 21 34 55
條件語句只在給定表達式爲真時執行。例如,依據隨機數的大小爲變量賦值:‘low’,‘medium’ 或者 ‘high’ 。在本案例中,隨機數是 1 到 100 之間的整數。
num = randi(100) if num < 34 sz = 'low' elseif num < 67 sz = 'medium' else sz = 'high' end
語句 sz = ‘high’ 只在 num 大於或等於 67 時執行。
MATLAB 在某些地方查找腳本和其餘文件的規則:若是要運行腳本,那麼腳本文件必須位於當前文件夾或在搜索路徑的某個文件夾中。
默認狀況下,MATLAB 安裝程序建立的 MATLAB 文件夾位於搜索路徑上。若是但願將程序存儲和運行在另外一個文件夾中,請將其添加到搜索路徑。選擇當前文件夾瀏覽器中的文件夾,右鍵單擊,而後選擇 Add to Path。
全部 MATLAB 函數都有支持文檔,其中包括示例和函數的輸入、輸出和語法的調用。如下有幾種方法能夠從命令行訪問這些信息:
doc mean
mean(
help mean
經過單擊幫助圖標來獲取完整的產品文檔。