首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在matlab中求矩阵的反对角线元素的指标

在matlab中求矩阵的反对角线元素的指标
EN

Stack Overflow用户
提问于 2022-10-23 12:18:08
回答 2查看 52关注 0票数 0

我在matlab中有一个m by n矩阵,希望找到每个反对角线元素的索引(行、列)。例如,对于4x3矩阵,我希望有以下索引:

代码语言:javascript
运行
复制
antidiag1 = (1,1)
antidiag2 = (2,1) , (1,2)
antidiag3 = (3,1) , (2,2), (1,3)
antidiag4 = (4,1) , (3,2), (2,3)
antidiag5 = (4,2) , (3,3)
antidiag3 = (4,3) 

在上面的示例(m,n)=(row, column)中。为了说明我所说的反对角线元素的含义,请参阅下面的矩阵,其中红线是反对角线。

如何找到指数?

EN

回答 2

Stack Overflow用户

发布于 2022-10-23 13:08:22

提取元素的最简单的解决方案是水平镜像矩阵,然后找到规则对角线:

代码语言:javascript
运行
复制
out = diag( flip(in, 2), k );

k这里的主对角线为0,对主对角线为正,对于下面的对角线为负值,参见diag

要找到指数本身要复杂得多。首先用一个循环来生成候选对,然后找出哪些对是有效的:

第一对是diagonal.

  • Then,第一对是i=1-kj=nn是矩阵的宽度,k是您迭代地从j中减去1到i的1,直到j是1。H 214H 115i=1-k>最后删除d16小于1或大于D17的对,矩阵的高度。H 218F 219

这个过程并不需要一个循环,循环进程可以被矢量化。不过,用这种方式来形容还是比较容易的。

在代码中,我们可以这样写(未经测试!):

代码语言:javascript
运行
复制
[m,n] = size(A);
i = (1:n)-k;
j = n:-1:1;
invalid = (i < 1) | (i > m);
i(invalid) = [];
j(invalid) = [];
票数 1
EN

Stack Overflow用户

发布于 2022-10-24 02:18:48

下面的脚本是这个问题的解决方案,适用于正方形和矩形二维矩阵。

代码语言:javascript
运行
复制
clear all;close all;clc

A1=randi([-10 10],3,4)

sz1=size(A1)
        
nA2=reshape([1:1:prod(sz1)],sz1)

nd=sum(sz1)     % amount diagonals

C1={}   % init result cell

for k=-floor(nd/2):1:floor(nd/2)

    a2 = diag( flip(nA2, 2), k )
    [row,col]=ind2sub(sz1,a2)
    C1={C1{:} [row col]}

end

C1(1)=[]  % sought indexes

for k=1:1:size(C1,2)

    C1{k}

end

解决方案包含在单元格C1中。

在MATLAB中读取单元元素的实际内容,使用花括号索引,如下所示

代码语言:javascript
运行
复制
 C1{1}
    =
     3     4

 C1{2}
    =
     2     4
     3     3

C1{3}
    =
     1     4
     2     3
     3     2

使用常规括号进行索引时,MATLAB返回所查找的元素,但在单元格类型中返回。

代码语言:javascript
运行
复制
C2(2)

 1×1 cell array
 {2×2 double}

若要访问解决方案索引的单个对,请使用以下符号

代码语言:javascript
运行
复制
C1{3}(1,:)
 =
   1     4

C1{3}(2,:)
 =
   2     3

C1{3}(3,:)
 =
   3     2

可以生成实际变量antidiag1 antidiag2 .带evalin命令

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74171081

复制
相关文章

相似问题

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