gpt4 book ai didi

arrays - 在 MATLAB 中使用矩阵进行矩阵索引

转载 作者:太空宇宙 更新时间:2023-11-03 20:20:53 25 4
gpt4 key购买 nike

我正在尝试从本质上用作查找表的矩阵中提取值。为此,我有一个行坐标矩阵和一个列坐标矩阵。有没有一种方法可以按如下方式提取值:

A(R, C)

A(R(:), C(:))

例如:

A = [ 1, 2, 3, 4; 
5, 6, 7, 8;
9, 0, 1, 2;
3, 4, 5, 6 ];

R = [ 1, 2;
1 2];
C = [ 1, 1;
1 1];

我想找到一些命令,以便

A(R, C) =

1, 5
1, 5

A(R(:), C(:)) =

1
1
5
5

当您执行这些命令时,实际发生的是您获得了矩阵的每个排列。所以在我的例子中,你得到一个由

A(1,1)  A(1,1)  A(1,1)  A(1,1)
A(1,1) A(1,1) A(1,1) A(1,1)
A(2,1) A(2,1) A(2,1) A(2,1)
A(2,1) A(2,1) A(2,1) A(2,1)

有没有一种方法可以对每个索引矩阵/向量进行成对索引,以便显示结果

A(1,1)  A(2,1)
A(1,1) A(2,1)

谢谢!

最佳答案

确实,您指出的是 Matlab 索引的一个微妙问题。
要解决此问题,您需要将行列索引RC 转换为linear indices。 .一种简单的方法是使用 sub2ind :

 A( sub2ind( size(A), R, C ) );

这是它的工作原理

>> A(sub2ind(size(A),R,C))
ans =
1 5
1 5

>> A(sub2ind(size(A),R(:),C(:)))
ans =
1
1
5
5

如果您对运行时间很紧张并且想避免 sub2ind 的开销,您可以自己直接转换索引:

 A( size(A,1)*(C-1)+R )

关于arrays - 在 MATLAB 中使用矩阵进行矩阵索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29971471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com