# Combining two vectors into a new one

11 visualizzazioni (ultimi 30 giorni)
Irem Sara il 11 Mar 2022
Commentato: Irem Sara il 11 Mar 2022
Hi,
I am working on a dynamic programming problem and I now have two equal-sized vectors, say vector A and B. I am trying to generate a new vector that starts with the first element of vector B, then finds the closest value in A and takes it's index value, then records the value corresponding to this index in B. I want to make a loop and cover all values in my vector B. Is there a way to code this? (Vector A and B won't have the exact same values unfortunately, so the code will need to find the closest element's index)
Thanks!
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Johan il 11 Mar 2022
I don't know if there is a builtin function to do that but you can achieve using translation, logical condition and find:
A = randi(10,5,1);
B = randi(10,5,1);
% compute difference of each element of B with each element of A
abs(B'-A)
ans = 5×5
1 0 3 4 3 2 1 2 3 2 4 3 0 1 0 5 4 1 0 1 4 3 0 1 0
% minimum difference value
min(abs(B'-A))
ans = 1×5
1 0 0 0 0
% Create a logical mask of the position of the minimum difference
1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1
%use find to get the index and rescale the index using the width of the array
%Equal distance increase the size of C compared to A and B
C = 7×1
1 1 3 5 4 3 5
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
Irem Sara il 11 Mar 2022
This is exactly what I was looking for- thank you so much!

Accedi per commentare.

### Più risposte (1)

KSSV il 11 Mar 2022
A = rand(3) ;
B = rand(2) ;
idx = knnsearch(B(:),A(:))
Also have a look on ismember, ismembertol.
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Categorie

Scopri di più su Matrix Indexing in Help Center e File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by