MATLAB:包含特定索引下另一个矩阵值的矩阵

MATLAB:包含特定索引下另一个矩阵值的矩阵,matlab,matrix,matlab-guide,indices,Matlab,Matrix,Matlab Guide,Indices,我需要帮助解决索引问题。指定的问题状态:两个矩阵(x和y)给出了从矩阵A形成矩阵B的坐标。生成矩阵B,其中包含x和y中给定坐标处A的值。 例如: x = [1 1 1; 2 2 1] y = [1 2 1; 3 2 4] %This would read as (1,1),(1,2),(1,1),(2,3),(2,2),(1,4) % Given matrix: A = [6 7 8 9; 10 11 12 13]; %This would give us this answer for B

我需要帮助解决索引问题。指定的问题状态:两个矩阵(x和y)给出了从矩阵A形成矩阵B的坐标。生成矩阵B,其中包含x和y中给定坐标处A的值。 例如:

x = [1 1 1; 2 2 1]
y = [1 2 1; 3 2 4]
%This would read as (1,1),(1,2),(1,1),(2,3),(2,2),(1,4)
% Given matrix: 
A = [6 7 8 9; 10 11 12 13];
%This would give us this answer for B (using the coordinate scheme above): 
B=[6 7 6; 12 11 9];
我猜我需要将
find
函数与
sub2ind
函数结合使用,但我不确定如何将其转换为工作代码。我唯一能想到的就是这样做:

B=((x(1),(y(1)), (x(2),y(2)).......

但这只适用于上面定义的矩阵,而不是随机生成的矩阵。我试着在网站上寻找类似的问题,但没有找到。非常感谢你的帮助

您不能对随机生成的矩阵执行此操作,因为您必须确保矩阵
A
具有
x
y
值所需的行和列

在这种情况下,您可以编写:

for i=1:length(x(:))
   B(i)=A(x(i),y(i));
end
B=reshape(B,size(x));

尝试使用循环。有时候最简单的方法是最好的。你是对的,
sub2ind
在这里会很有帮助,如果你喜欢的话,
重塑
。您不需要循环-这可以在一条线上完成。阅读有关内容,看看您是否能够了解如何处理
ind2sub
的输出。这已经在许多问题中得到了回答,例如:,,以及更多…可能重复我在实现您的代码时不断遇到的错误:“要重塑元素的数量,不得更改。”以及“错误在B=重塑(B,大小(x))”。这是我在脚本中输入的内容,它不起作用:x=[1 1;2 2 1]y=[1 2 1;3 2 4]A=[6 7 8 9;10 11 12 13]对于I=1:length(x(:)B(I)=A(x(I),y(I));end B=重塑(B,大小(x))我复制了您的代码,得到了B=[6 7 6;12 11 9]。我不知道是什么问题。。。
size(B)
您得到了什么?很抱歉,我刚刚在清除
clear,clc
命令窗口后重试,结果成功了!我得到了正确的矩阵。谢谢你的帮助!:D