2017-03-06 112 views
0

我有一个20x1双数组A和一个1000x1双数组B从另一个数组中的索引获取数组的值:Matlab

我想阵列C,在其中B值被用来索引值A像这样阵列C将1000x1双:

C(1) = A(B(1)) 
C(2) = A(B(2)) 
... 
C(i) = A(B(i)) 
... 
c(1000) = A(B(1000)) 

这可怎么办呢?

+0

标题是非常误导。我以为你正在尝试几个Matlab实例。 – Bernhard

回答

3

你并不需要为这个循环,就可以直接使用:

C = A(B) 

这利用了MATLAB的矩阵索引,这是在使用数组代替整数时在MATLAB中处理索引的方式。

在文档请看:https://uk.mathworks.com/help/matlab/math/matrix-indexing.html

例如:

A = [11 12 13]; 
B = [1 2 3 1 2 3 3 2 1]; 
C = A(B) 

C = 

11 12 13 11 12 13 13 12 11 

确保乙只包含其是A(的有效索引不小于1或大于A的长度的整数)。

0

我做到了使用循环,如下图所示,不知道这是理想的解决方案:

C = zeros(1000,1); 

for i = 1:1000 
    C(i,1) = A(B(i)); 
end 
相关问题