有方形矩阵A,我想在它之间交换2行,但有约束,这个交换只对两行中对角线下的元素生效.
示例 -
1 2 3 4
3 6 7 8
6 5 4 2
9 4 6 7
Run Code Online (Sandbox Code Playgroud)
row1和row2之间的交换将返回相同的矩阵,因为在第1行的对角线下没有元素.
但是row2和row3之间的交换会给出 -
1 2 3 4
6 6 7 8
3 5 4 2
9 4 6 7
Run Code Online (Sandbox Code Playgroud)
它实际上只在2个元素索引(3,1)和(2,1)之间交换,因为row2中没有更多元素在对角线下面.
如果给定两个必需的行索引,如何在没有显式循环的情况下获得此函数?
可以在这里找到定期交换 .
您可以尝试以下方法:
A([row1 row2],1:row1-1) = A([row2 row1],1:row1-1)
Run Code Online (Sandbox Code Playgroud)
请注意,row1 <= row2为此工作.如有必要,您可以简单地使用min和/或max查找最小/最大的.