交换仅对下对角线元素生效的行

URL*_*L87 6 matlab matrix

有方形矩阵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中没有更多元素在对角线下面.

如果给定两个必需的行索引,如何在没有显式循环的情况下获得此函数?

可以在这里找到定期交换 .

Ste*_*fin 6

您可以尝试以下方法:

A([row1 row2],1:row1-1) = A([row2 row1],1:row1-1)
Run Code Online (Sandbox Code Playgroud)

请注意,row1 <= row2为此工作.如有必要,您可以简单地使用min和/或max查找最小/最大的.

  • +1,注意`row1`和`row2`必须排序(即`row1 <row2`) (2认同)