deleting a row based on index.
    14 views (last 30 days)
  
       Show older comments
    

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 Comments
Accepted Answer
  David
 on 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 Comments
  David
 on 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) = [];
More Answers (0)
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

