Rename the indices of a vector in a certain way.
    3 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hi all,
My code below has a vector A and its index vector idx. It goes throguh the elements of A and when it finds a zero element, it removes its index from the orginal index vector. 
My problem here is: suppose the updated index vector is  . How can I rename this vector so it increases in an acending order? For example: the first element in the updated index vector is 1, I want this to be 1, the second element in the updated index vector is 3, I want this to become 2, and so on so forth.
. How can I rename this vector so it increases in an acending order? For example: the first element in the updated index vector is 1, I want this to be 1, the second element in the updated index vector is 3, I want this to become 2, and so on so forth.
 . How can I rename this vector so it increases in an acending order? For example: the first element in the updated index vector is 1, I want this to be 1, the second element in the updated index vector is 3, I want this to become 2, and so on so forth.
. How can I rename this vector so it increases in an acending order? For example: the first element in the updated index vector is 1, I want this to be 1, the second element in the updated index vector is 3, I want this to become 2, and so on so forth.%define the index vector
idx = [1 2 3 4 5];
%define the vector
A   = [5 0 6 0 3];
%initialise the vector that has all indices of zero elements
zero_indices = [];
%go through the elements of vector A
for uu = 1:numel(A)   
    %if the element is zero
    if A(uu)==0
        %assign its index to the zero-elements index vector
        zeroindex = uu;
        %collect all results from iterations
        zero_indices = [zero_indices ; zeroindex];
    end
end
%update the original index vector by removing the indicies that correspond
%to zero elements
idx(zero_indices) = [];
%rename the indices os that they beocome 1, 2, 3, ...
Any help would be appreicted.
Thanks.
0 commentaires
Réponse acceptée
  Garmit Pant
      
 le 4 Juil 2024
        Hello LH 
Given that you have extracted the indices of non-zero elements in the vector ‘A’, you can rename the index vector to have ascending values using the following code-snippet: 
% Given non-zero value indices are [1 3 5] 
idx = [1 3 5]; 
% Rename the indices so that they become 1, 2, 3, ... 
new_idx = 1:numel(idx); 
% Display the updated index vector 
disp('Updated index vector:'); 
disp(new_idx); 
I hope you find the above explanation and suggestions useful! 
4 commentaires
  Stephen23
      
      
 le 4 Juil 2024
				The simpler MATLAB approaches:
idx = [1,3,3,5,1,5,3,1]
[~,~,idy] = unique(idx)
idy = discretize(idx,[unique(idx),Inf])
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Logical dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





