MATLAB 2019 快速入門教程(官方手冊翻譯)(1/4)


MATLAB 2019 快速入門教程(官方手冊翻譯)(1/4)

1.1 MATLAB 產品描述

全世界數超過百萬的工程師和科學家們使用 MATLAB 來分析和設計改變世界的系統和產品。MATLAB 應用於汽車安全系統、宇宙飛船、健康監測設備、智能電網及LTE蜂窩網絡等領域。它被用於機器學習、信號處理、圖像處理、計算機視覺、網絡通訊、數值計算、控制設計、機器人技術等等。html

1.1.1 數學、圖形與編程

基於矩陣的 MATLAB 語言是世界上最天然的表達數學計算的方法。內置的圖形顯示功能使咱們更容易將數據可視化並從中獲得新認識。一個強大的內置工具箱可讓您快速上手您的領域所必需的算法。MATLAB 各類功能須要咱們去實踐、探索和發現。這些 MATLAB 工具和功能都通過嚴格的測試,還能夠協同工做。web

1.1.2 規模、集成與部署

MATLAB 將您的想法呈如今屏幕上。您能夠在更大的數據集合上運行分析,並擴展到數據集羣和雲平臺。MATLAB 代碼能夠與其餘語言集成,幫助您在網絡、企業和生產系統中部署算法和應用程序。算法

1.1.3 關鍵特性

  • 用於科學和工程計算的高級語言;
  • 爲迭代開發、設計和解決問題而優化的桌面環境;
  • 用於可視化數據的圖形和用於建立自定義圖表的工具;
  • 用於曲線配合、數據分類、信號分析、控制系統調優等任務的應用;
  • 爲普遍的工程和科學應用程序而附加的工具箱;
  • 用於構建具備自定義用戶接口的應用程序的工具;
  • 用於 C/ C++、Java®、.NET、Python、SQL、Hadoop 和 Microsoft® Excel® 的接口;
  • 可選擇免版稅部署的方式與最終用戶共享 MATLAB 程序。

1.2 MATLAB 界面基礎知識

當您啓動 MATLAB 時,桌面顯示爲默認佈局。圖1default layout默認界面包括如下面板:編程

  • Current Folder :訪問您的文件;
  • Command Window :在命令行輸入命令,由提示符 >> 指示 ;
  • Workspace :瀏覽您從文件中建立或導入的數據。

當你使用 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,而後按向上箭頭鍵。機器學習

1.3 矩陣與數組

MATLAB 是 「矩陣實驗室」 的縮寫。雖然其餘編程語言大多一次處理一個數,但 MATLAB 主要用於對整個矩陣和數組進行操做。

不管數據類型如何,全部 MATLAB 變量都是多維數組。矩陣是線性代數中經常使用的二維數組。

1.3.1 創建數組

若要在一行中建立包含四個元素的數組,請使用英文逗號,)或空格分隔這些元素。

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

1.3.2 矩陣和數組運算

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

1.3.3 數組的拼合

數組的拼合是將數組拼接起來以生成更大的數組的過程。實際上,您經過拼合第一個數組的各個元素來構建一個數組。拼合操做符是一對方括號 [ ]

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.3.4 複數的表示

複數有實部和虛部,其中虛部是 -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

1.4 數組的索引

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。

1.5 工做空間變量

工做區包含您在 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 窗格中。圖2.Workspace
退出 MATLAB 後,工做區變量不會持久存在。用 save 命令能夠保存您的數據,以便稍後使用。

save myfile.mat

保存保存當前工做文件夾中的工做區,保存在一個壓縮的文件中,擴展名爲 .mat,文件名爲 MAT-file

要清除工做區中的全部變量,請使用 clear 命令。

使用 load 命令將數據從 MAT-file 文件中恢復到工做區。

load myfile.mat

1.6 文本和字符串

1.6.1 字符串數組中的文本

處理文本時,將字符序列括在雙引號中。你能夠將文本分配給變量。

t = "Hello, world";

若是文本包含雙引號,請在變量的定義中使用兩個雙引號。

q = "Something ""quoted"" and something else."

q =
	"Something "quoted" and something else. "

tq 是數組,就像全部 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

1.6.2 字符數組中的數據

有時字符表示與文本不對應的數據,如 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 數據,反之亦然。

1.6.3 函數的調用

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 函數用於清除命令窗口。

1.7 二維圖和三維圖

1.7.1 二維圖

要建立二維曲線圖,請使用 plot 函數。例如,繪製正弦函數的值從 0 到 2π :

x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)

圖3:y=sin(x) 曲線圖
您能夠命名這些軸並添加標題。

xlabel('x')
ylabel('sin(x)')
title('Plot of the Sine Function')

在這裏插入圖片描述
經過向 plot 函數添加第三個輸入參數,可使用紅色虛線繪製相同的變量。

plot(x,y,'r--')

圖5:plot 函數添加第三個輸入參數後的圖像
’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

圖6.使用添加圖形命令

1.7.2 三維圖

三維圖一般顯示由兩個變量組成的函數 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)

圖7.建立曲面圖形
surf 函數和與之一塊兒使用的 mesh 函數用於在三維空間顯示曲面。
surf 函數用於彩色顯示出鏈接線和表面。
mesh 函數用於產生表面的線框,而且只標記的點之間的連線線框着色。

1.7.3 子圖

您可使用 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');

圖8.建立四幅圖

1.8 程序腳本

最簡單的 MATLAB 程序類型稱爲腳本。腳本是一個包含屢次使用 MATLAB 命令行和函數調用的文件。您能夠經過在命令行中鍵入腳本的名稱來運行腳本。

1.8.1 腳本

要建立腳本,請使用 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 按鈕來運行腳本。
圖9. run 按鈕

1.8.2 實時腳本

您能夠在 live scripts 中使用格式化選項來加強代碼,而不是用純文本的方式編寫代碼和註釋。實時腳本容許您查看代碼和輸出並與之交互,還能夠包含格式化的文本、方程式和圖像。

例如,經過選擇 Save As 並將文件類型更改成 MATLAB 實時代碼文件 (*.mlx)mysphere 此時便轉換爲實時腳本。而後,用格式化的文本替換代碼註釋。例如:

  • 將評論行轉換爲文本。選擇以百分號開頭的每一行,而後選擇 Text 選項,刪除百分號。
    圖10. Text選項
  • 重寫文本以替換代碼行末尾的註釋。若是要將 monospace 字體應用於文本中的函數名,請點擊 Live Editor 選項卡上的 Text 選項中的按鈕 M

圖12. 將 monospace 字體應用於函數名
若要添加方程式,請點擊 Insert 選項卡上的 Equation 選項。

若要新建一個實時腳本,請使用 edit 命令,並在文件名中添加 .mlx 擴展名:

edit newfile.mxl

1.8.3 循環語句和條件語句

您能夠在任何一個腳本中定義代碼區段用於編寫循環語句或條件語句。循環語句使用關鍵字 forwhile ,條件語句使用關鍵字 ifswitch

循環對於建立序列頗有用。例如,建立一個名爲 fibseq 的腳本,它使用 for 循環來計算斐波那契數列的第一個100個數字。在這個序列中,第一個數字是1,後面的每一個數字是前兩個數字的和,遞推公式:
F n = F n 1 + F n 2 Fn = Fn-1 + Fn-2

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 時執行。

1.8.4 腳本位置

MATLAB 在某些地方查找腳本和其餘文件的規則:若是要運行腳本,那麼腳本文件必須位於當前文件夾或在搜索路徑的某個文件夾中。

默認狀況下,MATLAB 安裝程序建立的 MATLAB 文件夾位於搜索路徑上。若是但願將程序存儲和運行在另外一個文件夾中,請將其添加到搜索路徑。選擇當前文件夾瀏覽器中的文件夾,右鍵單擊,而後選擇 Add to Path

1.9 幫助和說明

全部 MATLAB 函數都有支持文檔,其中包括示例和函數的輸入、輸出和語法的調用。如下有幾種方法能夠從命令行訪問這些信息:

  • 使用 doc 命令在單獨的窗口中打開函數文檔。
doc mean
  • 在你寫出函數用於輸入參數的圓括號時,命令窗口會顯示函數的提示(函數說明的語法部分的提示)。
mean(
  • 使用 help 命令在命令窗口中查看函數說明的簡略文本版本。
help mean

經過單擊幫助圖標來獲取完整的產品文檔。
幫助圖標