理解矩阵转置及矩阵转置算法

时间:2024-02-21 19:49:51

矩阵是二维数组,行宽和列宽均大于2的二维数组是矩阵(易语言中)。

我们可以这样理解:一堆数据排列成一个阵,这个阵的形状是矩形,于是咱们称阵(这种形式)为矩阵。

转置是矩阵的一种算法,就像四则运算(即加、减、乘、除)那样的;它将矩阵的每一行变成列,那么原先的每一列就会变成行,简单点说就是行列互换。

 

【矩阵转置前后】

 

 

【易语言 - 矩阵转置算法】

(算法不一定最优,只是比较简单罢了)

(算法由我[砹小翼]编写,没有参考其它资料)

 1 .版本 2
 2 
 3 .子程序 整数矩阵转置, 逻辑型, 公开, 对一个整数矩阵进行“转置”运算,可理解为行和列互相调换。数组不为整数矩阵则返回假。
 4 .参数 欲转置的整数矩阵, 整数型, 数组
 5 .参数 存放结果的变量, 整数型, 参考 可空 数组, 如果不提供此参数,则将结果返回给矩阵所在变量;如果提供此参数,则矩阵不变,结果存放在此参数。
 6 .局部变量 一维下标, 整数型
 7 .局部变量 二维下标, 整数型
 8 .局部变量 i, 整数型
 9 
10 一维下标 = 取数组下标 (欲转置的整数矩阵, 1)
11 二维下标 = 取数组下标 (欲转置的整数矩阵, 2)
12 .如果真 (一维下标 < 2 或 二维下标 < 2 或 取数组下标 (欲转置的整数矩阵, 3) ≠ 0)
13     返回 (假)
14 .如果真结束
15 .计次循环首 (一维下标 × 二维下标, i)
16     加入成员 (存放结果的变量, 欲转置的整数矩阵 [i])
17     \' 易语言中,非线性数组可当作线性数组读取。
18     \' 设数组为[4,3],依照读取顺序,对应关系为:
19     \' [1] : [1] [1]
20     \' [2] : [1] [2]
21     \' [3] : [1] [3]
22     \' [4] : [2] [1]
23     \' [5] : [2] [2]
24     \' ...
25     \' [9] : [3] [3]
26     \' [10] : [4] [1]
27     \' [11] : [4] [2]
28     \' [12] : [4] [3]
29 .计次循环尾 ()
30 重定义数组 (存放结果的变量, 真, 二维下标, 一维下标)
31 .如果真 (是否为空 (存放结果的变量))
32     复制数组 (欲转置的整数矩阵, 存放结果的变量)
33 .如果真结束
34 返回 (真)

 

【易语言 - 矩阵判断】

易语言中,只要二维数组两个维度的下标都大于1,那么二维数组一定是矩阵。

详细代码:(其实很简单)

1 .版本 2
2 
3 .子程序 是否为整数矩阵, 逻辑型, 公开, 检验一个二维数组是否为整数矩阵,是则返回真,否则返回假。
4 .参数 欲检查的数组, 整数型, 数组
5 
6 返回 (取数组下标 (欲检查的数组, 1) ≥ 2 且 取数组下标 (欲检查的数组, 2) ≥ 2 且 取数组下标 (欲检查的数组, 3) = 0)