MATLAB改变矩阵大小和维度的多种方式(附带实例)
在 MATLAB 中,根据运算时的不同情况和需要,矩阵大小及结构的改变方式主要有旋转矩阵、改变矩阵维度、删除矩阵元素等。
旋转矩阵与改变矩阵维度的函数如下表所示。
【实例】矩阵的旋转与维度的改变。在命令行窗口中输入以下语句,并显示相应的输出结果。
旋转矩阵与改变矩阵维度的函数如下表所示。
函数名称 | 函数功能 |
---|---|
fliplr(A) | 对矩阵每一行均进行逆序排列 |
flipud(A) | 对矩阵每一列均进行逆序排列 |
flip(A, dim) | 生成一个在 dim 维矩阵 A 内的元素交换位置的多维矩阵 |
rot90(A) | 生成一个由矩阵 A 逆时针旋转 90° 得到的新矩阵 |
rot90(A, k) | 生成一个由矩阵 A 逆时针旋转 k×90° 得到的新矩阵 |
reshape(A, m, n, ..., p) |
生成一个 m×n×…×p 维的矩阵,其元素以线性索引的顺序从矩阵 A 中取得 如果矩阵 A 中没有 m×n×…×p 个元素,那么将返回一条错误提示信息 |
repmat(A,[m n...,p]) | 创建一个和矩阵 A 具有相同元素的 m×n×…×p 维的多维矩阵 |
shiftdim(A, n) | 矩阵的列移动 n 步。n 为正数,矩阵向左移;n 为负数,矩阵向右移 |
squeeze(A) | 返回没有空维的矩阵 A |
cat(dim, A, B) | 将矩阵 A 和 B 组合成一个 dim 维的多维矩阵 |
permute(A, order) | 根据向量 order 改变矩阵 A 中的维数顺序 |
ipermute(A, order) | 进行命令 permute 的逆变换 |
sort(A) |
对一维或二维矩阵进行升序排序,并返回排序后的矩阵 当 A 为二维矩阵时,对矩阵的每一列分别进行排序 |
sort(A, dim) | 按指定的方向对矩阵进行升序排序,并返回排序后的矩阵。当 dim=1 时,对矩阵的每一列进行排序;当 dim=2 时,对矩阵的每一行进行排序 |
sort(A, dim, mode) | 当 mode 为'ascend'时,进行升序排序;当 mode 为 'descend' 时,进行降序排序 |
[B, IX] = sort(A,...) | IX 为排序后元素在原矩阵中的行位置或列位置的索引 |
【实例】矩阵的旋转与维度的改变。在命令行窗口中输入以下语句,并显示相应的输出结果。
>> Randoma = randn(1,4) % 生成随机的 1×4 矩阵 Randoma = 0.6715 -1.2075 0.7172 1.6302 >> Randomb = randn(2) % 生成随机的 2×2 矩阵 Randomb = 0.4889 0.7269 1.0347 -0.3034 >> Randoma = reshape(Randoma, 2, 2) % 将 1×4 矩阵变为 2×2 矩阵 Randoma = 0.6715 0.7172 -1.2075 1.6302 >> Randoma = fliplr(Randoma) % 将 2×2 矩阵每行逆序排列 Randoma = 0.7172 0.6715 1.6302 -1.2075 >> Randoma = rot90(Randoma) % 将 2×2 矩阵逆时针旋转 90° Randoma = 0.6715 -1.2075 0.7172 1.6302 >> Randomc = cat(2, Randoma, Randomb) % 将两个 2×2 矩阵组合为一个 2×4 矩阵 Randomc = 0.6715 -1.2075 0.4889 0.7269 0.7172 1.6302 1.0347 -0.3034