2017-03-06 7 views
0

私は20x1の倍精度配列Aと1000x1の倍精度配列Bを持っています。別の配列のインデックスから配列の値を取得します。Matlab

私は Bの値がそうのよう Aでインデックスに値を使用する場合、配列 Cはダブル1000x1なり、アレイ C、取得したい

:これは

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 

BのみAの長さよりも(1よりも小さいか大きくないの有効な指標である整数が含まれていることを確認)。

0

が、これは理想的なソリューションであるかどうかわからない、以下に示すように、私はforループを使用してそれをやった:あなたは、直接使用することができます

C = zeros(1000,1); 

for i = 1:1000 
    C(i,1) = A(B(i)); 
end 
関連する問題