首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

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
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74171081

复制
相关文章

相似问题

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