Rename the indices of a vector in a certain way.
41 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
LH
il 4 Lug 2024 alle 13:46
Commentato: Stephen23
il 4 Lug 2024 alle 17:54
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1727681/image.png)
%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 Commenti
Risposta accettata
Garmit Pant
il 4 Lug 2024 alle 14:30
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 Commenti
Stephen23
il 4 Lug 2024 alle 17:54
The simpler MATLAB approaches:
idx = [1,3,3,5,1,5,3,1]
[~,~,idy] = unique(idx)
idy = discretize(idx,[unique(idx),Inf])
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!