MATLAB 向量和矩阵

MATLAB 向量和矩阵
小嗷犬输入数组
MATLAB 中的每个数值变量都是一个数组,单个称为标量的数值实际上是一个 1×1 数组,也即它包含 1 行 1 列。
我们可以用方括号[]来创建包含多个元素的数组:
| 1 |  | 
这样我们能够得到一个包含元素2、3、4的数组,也即一个包含元素2、3、4的行向量。
我们可以通过分号;来区分数组中的不同行:
| 1 |  | 
这样我们能够得到一个2×3数组,第一行包含元素2、3、4,第二行包含元素5、6、7。
创建等间距向量
有的时候,我们会需要一些包含等间距数值的向量,如:
| 1 |  | 
当需要的数值量更多时,我们需要写成这样:
| 1 |  | 
这显然是十分不便的,MATLAB 为我们创建等间距向量提供了更简便的写法。
通过间距创建等间距向量
我们可以用冒号运算符:生成一个等间距的向量:
| 1 |  | 
仅指定起始值和最终值来生成一个等间距的向量,同时注意,使用冒号运算符时,不需要方括号。
冒号运算符:使用的默认间距为 1,我们也可以手动指定间距:
| 1 |  | 
这样表示以 2 为起始值,以 2 为间距,以 12 为最终值生成一个等间距的向量,等价于:
| 1 |  | 
通过元素数目创建等间距向量
如果我们知道向量中所需的元素数目(而不是每个元素之间的间距),则可以改用 linspace 函数:
| 1 |  | 
创建一个以 1 开头,以 10 结尾,共包含 5 个元素的行向量:
| 1 |  | 
等间距列向量
上面的两个方法都可以创建等间距向量,但它们创建出的向量都是行向量,如何得到等间距的列向量呢?
MATLAB 为我们提供了转置运算符 ' 来将一个向量进行转置。
通过转置,我们就可以用上面的方法生成等间距的列向量了:
| 1 |  | 
我们也可以在创建时就进行转置,此时我们使用圆括号()来指定运算的顺序:
| 1 |  | 
数组创建函数
MATLAB 包含许多函数,可帮助我们创建常用的矩阵,如 rand 函数:
| 1 |  | 
这里 x 将会是一个 2×2 的随机数矩阵。
为 rand 函数提供两个参数,来分别指定它的行数和列数:
| 1 |  | 
这里 x 将会是一个 2×3 的随机数矩阵。
其他的数组创建函数也具有相同的用法:
| 1 |  | 
这里的 x 和 y 分别是一个 4×4 的全0矩阵和一个 6×3 的全1矩阵。
size 函数能够得到现有矩阵的大小:
| 1 |  | 
我们可以借助 size 函数来生成与现有矩阵大小相同的矩阵:
| 1 |  | 
创建和合并数组的函数
| 函数 | 说明 | 
|---|---|
| zeros(m,n) | 创建一个 m×n 的全0矩阵 | 
| ones(m,n) | 创建一个 m×n 的全1矩阵 | 
| rand(m,n) | 创建一个 m×n 的随机数矩阵 | 
| randn(m,n) | 创建一个 m×n 的标准正态分布随机数矩阵 | 
| ture(m,n) | 创建一个 m×n 的全true矩阵 | 
| false(m,n) | 创建一个 m×n 的全false矩阵 | 
| eye(n) | 创建一个 n×n 的单位矩阵 | 
| diag(v) | 创建一个对角矩阵,对角线上的元素为向量 v | 
| diag(v,k) | 创建一个对角矩阵,对角线上的元素为向量 v,对角线的偏移量为 k | 
| blkdiag(A,B,…) | 创建一个由矩阵 A、B、… 组成的分块对角矩阵 | 
| linspace(a,b,n) | 创建一个从 a 到 b 的等差数列,包含 n 个元素 | 
| logspace(a,b,n) | 创建一个从 10^a 到 10^b 的等比数列,包含 n 个元素 | 
| cat(dim,A,B,…) | 沿着维度 dim 将矩阵 A、B、… 连接起来 | 
| vertcat(A,B,…) | 沿着第一维将矩阵 A、B、… 连接起来 | 
| horzcat(A,B,…) | 沿着第二维将矩阵 A、B、… 连接起来 | 
| repelem(A,m,n) | 创建一个 m×n 的矩阵,其中每个元素都是矩阵 A 中的元素的重复 | 
| repmat(A,m,n) | 创建一个 m×n 的矩阵,其中每个元素都是矩阵 A 的重复 | 
确定数组大小、形状和排序的函数
| 函数 | 说明 | 
|---|---|
| length(x) | 返回向量 x 的长度 | 
| size(x) | 返回矩阵 x 的大小 | 
| size(x,dim) | 返回矩阵 x 在维度 dim 上的大小 | 
| ndims(x) | 返回矩阵 x 的维数 | 
| numel(x) | 返回矩阵 x 中元素的个数 | 
| isscalar(x) | 判断 x 是否是标量 | 
| issorted(x) | 判断向量 x 是否是有序的 | 
| issortedrows(x) | 判断矩阵 x 的行是否是有序的 | 
| isvector(x) | 判断 x 是否是向量 | 
| ismatrix(x) | 判断 x 是否是矩阵 | 
| isrow(x) | 判断 x 是否是行向量 | 
| iscolumn(x) | 判断 x 是否是列向量 | 
| isempty(x) | 判断 x 是否为空 | 


























