Matlab快速入門
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iNwcjNmRmY0MDN0UWL5EGZ40SMxIWZtITM5EWL0QGOzgTNkN2LcRnblRnbvN2Lc12bj5yZtlWZjVjL0ADcvw1LcpDc0RHaiojIsJye.png)
- 1.1 桌面基礎知識
- 1.2 矩陣和數組
- 1.3 數組索引
- 1.4 工作區變量
- 1.5 文本和字元
- 1.6 調用函數
- 1.7 二維圖和三維圖1.7.1 線圖1.7.2 三維繪圖1.7.3 子圖
1.1 桌面基礎知識
MATLAB(矩陣實驗室),全稱為Matrix Laboratory,是MathWorks公司推出的用于算法開發、資料可視化、資料分析以及數值計算的進階技術計算語言和互動式環境的商業數學軟體。 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會執行計算,但不在指令行視窗中顯示輸出。 e = a*b; 按向上 (↑) 和向下箭頭鍵 (↓) 可以重新調用以前的指令。在空白指令行中或在鍵入指令的前幾個字元之後按箭頭鍵。例如,要重新調用指令 b = 2,請鍵入 b,然後按向上箭頭鍵。
1.2 矩陣和數組
MATLAB 是“matrix laboratory”的縮寫形式。``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
建立矩陣的另一種方法是使用 ones、zeros 或 rand 等函數。例如,建立一個由零組成的 5×1 列向量。
z = zeros(5,1)
z = 5×1 0 0 0 0 0
MATLAB 允許您使用單一的算術運算符或函數來處理矩陣中的所有值。 a + 10 ans = 3×3
11 12 1314 15 1617 18 20
要轉置矩陣,請使用單引号 ('):
a'
ans = 3×3 1 4 7 2 5 8 3 6 10
您可以使用 * 運算符執行标準矩陣乘法,這将計算行與列之間的内積。例如,确認矩陣乘以其逆矩陣可傳回機關矩陣:
p = a*inv(a)
p = 3×31.0000 0 -0.0000 0 1.0000 0 0 0 1.0000
請注意,p 不是整數值矩陣。MATLAB 将數字存儲為浮點值,算術運算可以區分實際值與其浮點表示之間的細微差别。使用 format 指令可以顯示更多小數位數:
format longp = a*inv(a)
p = 3×3 1.000000000000000 0 -0.000000000000000 0 1.000000000000000 0 0 0 0.999999999999998
使用以下指令将顯示内容重置為更短格式 format short format 僅影響數字顯示,而不影響 MATLAB 對數字的計算或儲存方式。 要執行元素級乘法(而非矩陣乘法),請使用 .* 運算符:
p = a.*a
p = 3×31 4 916 25 3649 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
1.3 數組索引
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)
Index exceeds matrix dimensions. 不過,您可以在指派語句左側指定目前維外部的元素。數組大小會增大以便容納新元素。
A(4,5) = 17
ans = 3×1 2 11 7
單獨的冒号(沒有起始值或結束值)指定該維中的所有元素。例如,選擇 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.4 工作區變量
工作區包含在 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
此外,桌面上的“工作區”窗格也會顯示變量。
工作區變量
退出 MATLAB 後,工作區變量不會保留。使用 save 指令儲存資料以供将來使用,
save myfile.mat
通過儲存,系統會使用 .mat 擴充名将工作區儲存在目前工作檔案夾中一個名為 MAT 檔案的壓縮檔案中。 要清除工作區中的所有變量,請使用 clear 指令。 使用 load 将 MAT 檔案中的資料還原到工作區。
load myfile.mat
1.5 文本和字元
當您處理文本時,将字元序列括在單引号中。可以将文本賦給變量。
myText = 'Hello, world';
如果文本包含單引号,請在定義中使用兩個單引号。
otherText = 'You''re right'
otherText = 'You're right'
與所有 MATLAB® 變量一樣,``myText和otherTex`t 為數組。其類或資料類型為 char(character 的縮略形式)。
whos myText
Name Size Bytes Class Attributes myText 1x12 24 char
您可以使用方括号串聯字元數組,就像串聯數值數組一樣。
longText = [myText,' - ',otherText]
longText = 'Hello, world - You're right'
要将數值轉換為字元,請使用 num2str 或int2str等函數。
f = 71;c = (f-32)/1.8;tempText = ['Temperature is ',num2str(c),'C']
tempText = 'Temperature is 21.6667C'
1.6 調用函數
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 = 5location = 3
将任何字元輸入括在單引号中:
disp('hello world')
hello world
要調用不需要任何輸入且不會傳回任何輸出的函數,請隻鍵入函數名稱:
clc
clc函數清空指令行視窗。
1.7 二維圖和三維圖
1.7.1 線圖
要建立二維線圖,請使用 plot 函數。例如,繪制從 0 到 之間的正弦函數值:
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:' 請求繪制使用 * 标記的綠色點線。 請注意,為第一幅繪圖定義的标題和标簽不再被用于目前的圖窗視窗中。預設情況下,每次調用繪圖函數、重置坐标區及其他元素以準備新繪圖時,``MATLAB`® 都會清空圖窗。 要将繪圖添加到現有圖窗中,請使用 hold on。在使用 hold off 或關閉視窗之前,目前圖窗視窗中會顯示所有繪圖。
x = 0:pi/100:2*pi;y = sin(x);plot(x,y)hold ony2 = cos(x);plot(x,y2,':')legend('sin','cos')hold off
二維線圖
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)
三維繪圖
surf 函數及其伴随函數 mesh 以三維形式顯示曲面圖。surf 使用顔色顯示曲面圖的連接配接線和面。mesh 生成僅以顔色标記連接配接定義點的線條的線框曲面圖。
1.7.3 子圖
使用 subplot 函數可以在同一視窗的不同子區域顯示多個繪圖。 subplot 的前兩個輸入表示每行和每列中的繪圖數。第三個輸入指定繪圖是否處于活動狀态。例如,在圖窗視窗的 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');
子圖