首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab中非方阵对角线的反射镜

Matlab中非方阵对角线的反射镜
EN

Stack Overflow用户
提问于 2021-04-08 08:08:23
回答 1查看 136关注 0票数 0

在Matlab中给定一个非平方的mx2矩阵,其中行的维数是变化的(因为它运行在一个for循环中,存储了我正在做的一些计算的结果),我们如何才能在对角线上得到镜子呢?

例如,给定3x2

代码语言:javascript
复制
U1 =

    11    12
    21    22
    31    32

矩阵,我们怎么才能

代码语言:javascript
复制
U2=

    11    21
    12    31
    22    32

这个矩阵?

在一般情况下,我们试图从(其中的两个数字表示每个元素的行/列索引-即U_ij:=ij,以使其更清楚)。

代码语言:javascript
复制
U =    11      12
       21      22
       31      32
       ... 
       (r-1)1  (r-1)2 
       r1      r2

代码语言:javascript
复制
V =   11        21
      12        31
      22        41
      ...       
      (r-2)2    r1
      (r-1)2    r2

我确实理解,对于给定的行大小,例如上面的行大小,我可以简单地设置m=3,使左上角和右下角元素保持不变,而其他列元素以对角线方式交换位置,其中第一列元素与第二列上的元素交换位置,在第二列上交换一个位置。但当m变化时,我不能动态地做到这一点。

我曾尝试使用索引和命令,如圈移和翻转组合,但没有任何效果。

注意事项

如果给定的矩阵是正方形的,那么很容易看出所需的矩阵是由A= A‘得到的转置矩阵,但我正在研究的情况并非如此。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-08 11:47:31

对于某些2列矩阵A,您想要的输出是

代码语言:javascript
复制
At = [[A(1,1); A(1:end-1,2)], [A(2:end,1); A(end,2)]];

然后我们就有了

代码语言:javascript
复制
>> 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    42
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66999787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档