deleting a row based on index.

17 vues (au cours des 30 derniers jours)
CalebJones
CalebJones le 3 Sep 2019
Commenté : CalebJones le 3 Sep 2019
HbO_index = find(xyz1 > 7.5);%link the index with the HbO table and eliminate the bad channels
HbO_good_channel = HbO;
% for i = 1 : size(HbO,2)
for l = 1 : length(HbO_index)
k = HbO_index(l);
HbO_good_channel(:,k) = [];
end
% end
HbO_index is matrix containing values which are basically index of HbO_good_channels which i want to remove.
Only the first column from HbO_good_channels it removing properly rest its removing one index prior to what is actually mentioned, it something to do with my logic. help me out please.
thank you
  2 commentaires
madhan ravi
madhan ravi le 3 Sep 2019
Attach your data as .mat file.
CalebJones
CalebJones le 3 Sep 2019
Modifié(e) : CalebJones le 3 Sep 2019
I have attached the files below madhan ravi

Connectez-vous pour commenter.

Réponse acceptée

David
David le 3 Sep 2019
The problem is that in your for-loop you delete the l-th column. Thereby all the indecies of the following columns change (are reduced by one). This happens in each iteration of the for-loop. If you want to remove columns "a, b, c, d" with your code you will actually remove columns "a, b+1, c+2, d+3".
You can solve your problem by starting the for loop on the end of "HBO_index" or without a for-loop:
HbO_good_channel = HbO
HbO_good_channel(:,find(xyz1 > 7.5)) = [];
  3 commentaires
David
David le 3 Sep 2019
You could also remove the "find" and use logical indexing for better performance:
HbO_good_channel = HbO
HbO_good_channel(:,xyz1 > 7.5) = [];
CalebJones
CalebJones le 3 Sep 2019
Sure thank you David

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing 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!

Translated by