MATLAB向量是一维数组,横着排叫行向量,竖着排叫列向量:

r = [7 8 9 10 11]
r =
     7     8     9    10    11

这是一个行向量。

行向量与列向量

差别主要在分隔符:同一行用空格或逗号,换到下一行用分号。

行向量 r(空格/逗号分隔) 7 r(1) 8 r(2) 9 r(3) 10 r(4) 11 r(5) 列向量 c(分号分隔) 7 c(1) 8 c(2) 9 c(3)
行向量横着排、列向量竖着排,MATLAB 下标从 1 开始:r(1) 是 7,c(3) 是 9。
r = [7 8 9 10 11]      % 行向量
c = [7; 8; 9; 10; 11]  % 列向量
r =
     7     8     9    10    11

c =
     7
     8
     9
    10
    11

写矩阵时仍是这套规则:行内空格或逗号,行与行之间用分号。

冒号生成等差向量

不必手写 [1 2 3 ... 100]。冒号可以按步长批量生成:

v = 1:5          % 1 到 5,步长 1
v = 1:2:20       % 1 到 20,步长 2
v = 20:-2:10     % 从 20 往下,步长 -2

完整形式是 起点:步长:终点。省略步长时默认为 1:

v = 1:2:9
v =
     1     3     5     7     9

取元素

下标从 1 开始,用圆括号:

v = [10 20 30 40 50 60];
v(3)      % 30
v(1:3)    % 10 20 30
v([2 5])  % 20 50
v(3:end)  % 30 40 50 60
v(:)      % 全部变成列向量形式

end 表示最后一个下标,不用先数长度。

向量运算

a = [1 2 3];
b = [4 5 6];
a + b          % 5 7 9
a - b          % -3 -3 -3
a * 2          % 2 4 6
a .* b         % 4 10 18,逐元素乘
a ./ b         % 0.25 0.4 0.5
a .^ 2         % 1 4 9

对应位置相乘、相除、乘方要写 .*./.^。单独的 * 是矩阵乘法,两个同行向量直接相乘往往会因维度报错,上一章运算符里已经见过。

常用函数

MATLAB 向量统计函数示例运行
v = [3 1 4 1 5];
length(v)    % 5
sum(v)       % 14
prod(v)      % 60
max(v)       % 5
min(v)       % 1
mean(v)      % 2.8
sort(v)      % 1 1 3 4 5

这些函数对矩阵也常用,默认多沿列方向计算,后面还会碰到。

动手练习

  • 1:2:20 生成向量,再算 v.^2(注意点号)
  • 生成 x = 0:0.1:1,用 length 看有多少个元素
  • x = 1:10 取出第 2、4、6 个元素组成新向量
  • x(end)x(end-1) 各是什么