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 编程语言中可能的更低的级别。