在Matlab中给定一个非平方的mx2矩阵,其中行的维数是变化的(因为它运行在一个for循环中,存储了我正在做的一些计算的结果),我们如何才能在对角线上得到镜子呢?
例如,给定3x2
U1 =
11 12
21 22
31 32矩阵,我们怎么才能
U2=
11 21
12 31
22 32这个矩阵?
在一般情况下,我们试图从(其中的两个数字表示每个元素的行/列索引-即U_ij:=ij,以使其更清楚)。
U = 11 12
21 22
31 32
...
(r-1)1 (r-1)2
r1 r2至
V = 11 21
12 31
22 41
...
(r-2)2 r1
(r-1)2 r2我确实理解,对于给定的行大小,例如上面的行大小,我可以简单地设置m=3,使左上角和右下角元素保持不变,而其他列元素以对角线方式交换位置,其中第一列元素与第二列上的元素交换位置,在第二列上交换一个位置。但当m变化时,我不能动态地做到这一点。
我曾尝试使用索引和命令,如圈移和翻转组合,但没有任何效果。
注意事项
如果给定的矩阵是正方形的,那么很容易看出所需的矩阵是由A= A‘得到的转置矩阵,但我正在研究的情况并非如此。
发布于 2021-04-08 11:47:31
对于某些2列矩阵A,您想要的输出是
At = [[A(1,1); A(1:end-1,2)], [A(2:end,1); A(end,2)]];然后我们就有了
>> A =[11 12
21 22
31 32
41 42];
>> At = [[A(1,1); A(1:end-1,2)], [A(2:end,1); A(end,2)]]
At =
11 21
12 31
22 41
32 42https://stackoverflow.com/questions/66999787
复制相似问题