MATLAB 程式設計/向量數學
外觀
MATLAB 是一種向量程式語言。 最有效地使用 MATLAB 將涉及利用內建的用於操作資料的功能,而不是使用迴圈等結構。
大多數算術運算子將在向量上按預期工作
>> a = [2 43 943 78];
>> 5 * a
ans =
10 215 4715 390
>> a / 2
ans =
1.0000 21.5000 471.5000 39.0000
>> 0.2 + a
ans =
2.2000 43.2000 943.2000 78.2000
同樣,所有這些操作都可以對矩陣進行,以獲得預期的結果。
大多數 MATLAB 函式,例如 sin 或 log,將返回與輸入維度相同的向量或矩陣。 因此,要計算 0 到 10 之間所有整數的正弦,只需執行
>> sin(0:10)
返回的向量將包含十個值。
諸如脫字元號 (^) 或向量之間的乘法之類的運算子可能無法按預期工作,因為 MATLAB 將向量視為與任何其他矩陣相同,因此執行矩陣冪和矩陣乘法。 所有運算子都可以加上一個 . 字首,以明確表明應在矩陣的每個元素上執行運算。 例如,要計算 1 到 4 之間所有整數的正弦和餘弦函式平方之差,可以使用
>> (sin(1:4) - cos(1:4)).^2
ans =
0.0907 1.7568 1.2794 0.0106
而不是
>> (sin(1:4) - cos(1:4))^2
??? Error using ==> mpower
Matrix must be square.
這是 MATLAB 嘗試使用矩陣乘法對 1x4 向量求平方而產生的結果。
使用 .* 或 ./ 允許將矩陣或向量的每個元素除以另一個矩陣或向量的元素。 為此,兩個向量必須具有相同的尺寸。
由於 MATLAB 是一種向量語言,因此諸如
x = [];
v = [5,2,4,6];
for i=1:4
x(i) = v(i) * ((i+32)/2 - sin(pi/2*i));
if(x(i) < 0)
x(i) = x(i) + 3;
end
end
可以在 MATLAB 中透過使用向量而不是迴圈來更高效地完成
i = 1:4;
v = [5,2,4,6];
x = v .* ((i+32)/2 - sin(pi/2*i));
x(x<0) = x(x<0) + 3;
在內部,MATLAB 當然是在迴圈遍歷向量,但它是在比 MATLAB 程式語言中可能的更低的級別。