使用列数据索引获取数据

时间:2018-12-13 05:23:58

标签: matlab

i一列中有数据A =(3,5,3,1,4)

B=[ 
 4   6   9  1   3
 2   7   2  5   7
 7   3   1  8   2
 4   1   6  9   1
 2   5   8  3   6 ]

我想要:如A中的第一个元素是3,为此我想从B中获得第3列第1行的第一个元素,即9。A的第二个元素是5,为此我要获得B的第5列和第2行的第二个元素为7,并对所有其他元素进行处理。如何在Matlab中做到这一点?必填元素为粗体和下划线。所需的输出是[9,7,1,4,3]

2 个答案:

答案 0 :(得分:0)

了解线性索引。

sub2ind将从[row col]转换为索引。

Cols=[ 3,5,3,1,4 ];
Rows=1:length(Cols);

B=[ 
 4   6   9  1   3
 2   7   2  5   7
 7   3   1  8   2
 4   1   6  9   1
 2   5   8  3   6 ];

Indexes=sub2ind(size(B),Rows,Cols);
Vals=B(Indexes)

答案 1 :(得分:0)

如果我读得很好,您希望替换元素。很简单 A(1)=B(1,3) A(2)=B(2,5)

因此,在声明了两个向量之后,您可以替换单个分量来处理它们。通常,当您具有一维矢量时,就可以访问它的组件位置,就像我对A所做的那样,仅在括号内声明位置本身。 您必须面对类似B的情况,如果您还记得线性代数和矩阵,那么一般B(a,b)表示矩阵B的元素位于a行和b列中,因此您必须指定行和列才能访问该行元素。