deleting a row based on index.

11 Ansichten (letzte 30 Tage)
CalebJones
CalebJones am 3 Sep. 2019
Kommentiert: CalebJones am 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 Kommentare
madhan ravi
madhan ravi am 3 Sep. 2019
Attach your data as .mat file.
CalebJones
CalebJones am 3 Sep. 2019
Bearbeitet: CalebJones am 3 Sep. 2019
I have attached the files below madhan ravi

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

David
David am 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 Kommentare
David
David am 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 am 3 Sep. 2019
Sure thank you David

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by