理解矩阵转置及矩阵转置算法
发布于 | 2016-08-24 22:31 | ||
保质期 | 2019-08 | ||
新鲜度 | 0% |
矩阵是二维数组,行宽和列宽均大于2的二维数组是矩阵(易语言中)。
我们可以这样理解:一堆数据排列成一个阵,这个阵的形状是矩形,于是咱们称阵(这种形式)为矩阵。
转置是矩阵的一种算法,就像四则运算(即加、减、乘、除)那样的;它将矩阵的每一行变成列,那么原先的每一列就会变成行,简单点说就是行列互换。
矩阵转置前后示意图:
矩阵转置算法
并非最优算法。
易语言
.版本 2
.子程序 整数矩阵转置, 逻辑型, 公开, 对一个整数矩阵进行“转置”运算,可理解为行和列互相调换。数组不为整数矩阵则返回假。
.参数 欲转置的整数矩阵, 整数型, 数组
.参数 存放结果的变量, 整数型, 参考 可空 数组, 如果不提供此参数,则将结果返回给矩阵所在变量;如果提供此参数,则矩阵不变,结果存放在此参数。
.局部变量 一维下标, 整数型
.局部变量 二维下标, 整数型
.局部变量 i, 整数型
一维下标 = 取数组下标 (欲转置的整数矩阵, 1)
二维下标 = 取数组下标 (欲转置的整数矩阵, 2)
.如果真 (一维下标 < 2 或 二维下标 < 2 或 取数组下标 (欲转置的整数矩阵, 3) ≠ 0)
返回 (假)
.如果真结束
.计次循环首 (一维下标 × 二维下标, i)
加入成员 (存放结果的变量, 欲转置的整数矩阵 [i])
' 易语言中,非线性数组可当作线性数组读取。
' 设数组为[4,3],依照读取顺序,对应关系为:
' [1] : [1] [1]
' [2] : [1] [2]
' [3] : [1] [3]
' [4] : [2] [1]
' [5] : [2] [2]
' ...
' [9] : [3] [3]
' [10] : [4] [1]
' [11] : [4] [2]
' [12] : [4] [3]
.计次循环尾 ()
重定义数组 (存放结果的变量, 真, 二维下标, 一维下标)
.如果真 (是否为空 (存放结果的变量))
复制数组 (欲转置的整数矩阵, 存放结果的变量)
.如果真结束
返回 (真)
矩阵判断
易语言中,只要二维数组两个维度的下标都大于1,那么二维数组一定是矩阵。
易语言
.版本 2
.子程序 是否为整数矩阵, 逻辑型, 公开, 检验一个二维数组是否为整数矩阵,是则返回真,否则返回假。
.参数 欲检查的数组, 整数型, 数组
返回 (取数组下标 (欲检查的数组, 1) ≥ 2 且 取数组下标 (欲检查的数组, 2) ≥ 2 且 取数组下标 (欲检查的数组, 3) = 0)