Combining two vectors into a new one
    14 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
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 Commenti
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)
 % 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 
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 Commenti
Vedere anche
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!