- iterate over the vector backwards.
- build a logical mask within the loop, and after the loop use the mask to remove all relevant elements at once.
In the following code if the condition is met i want to remove those two respective elements from the array 'New'. But i get an error saying 'Index exceeds matrix dimensions'.
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
New = [800,750,740,700,500,300];
radius=50;
for k=1:111
for i=1:length(New)
for j= (i+1):length(New)
d(i,j)= sqrt((a(k)-New(:,i)).^2+(b(k)-New(:,j)).^2); % 'a' and 'b' are two matrices of size 1*111
if (d(i,j)<=radius)
New(i) = [];
New(j) = [];
end
end
end
end
0 commentaires
Réponses (1)
Stephen23
le 27 Juil 2018
Modifié(e) : Stephen23
le 27 Juil 2018
This is a common beginner mistake. If you remove the first element of a four element vector, then it resizes to have three elements. But if your code still thinks the vector has four elements and you try to access the fourth element, then you will get an error. That is basically what you are doing.
Two solutions:
2 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices 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!