Rename the indices of a vector in a certain way.
    3 ビュー (過去 30 日間)
  
       古いコメントを表示
    
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 件のコメント
採用された回答
  Garmit Pant
      
 2024 年 7 月 4 日
        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 件のコメント
  Stephen23
      
      
 2024 年 7 月 4 日
				The simpler MATLAB approaches:
idx = [1,3,3,5,1,5,3,1]
[~,~,idy] = unique(idx)
idy = discretize(idx,[unique(idx),Inf])
その他の回答 (0 件)
参考
カテゴリ
				Help Center および File Exchange で Logical についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





