Combining two vectors into a new one
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Irem Sara
el 11 de Mzo. de 2022
Comentada: Irem Sara
el 11 de Mzo. de 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 comentarios
Respuesta aceptada
Johan
el 11 de Mzo. de 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)
% minimum difference value
min(abs(B'-A))
% Create a logical mask of the position of the minimum difference
min_distance_mask = abs(B'-A) == min(abs(B'-A))
%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 = mod(find(min_distance_mask)-1,size(min_distance_mask,2))+1
Más respuestas (1)
KSSV
el 11 de Mzo. de 2022
A = rand(3) ;
B = rand(2) ;
idx = knnsearch(B(:),A(:))
Also have a look on ismember, ismembertol.
0 comentarios
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!