deleting a row based on index.

16 ビュー (過去 30 日間)
CalebJones
CalebJones 2019 年 9 月 3 日
コメント済み: CalebJones 2019 年 9 月 3 日
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 件のコメント
madhan ravi
madhan ravi 2019 年 9 月 3 日
Attach your data as .mat file.
CalebJones
CalebJones 2019 年 9 月 3 日
編集済み: CalebJones 2019 年 9 月 3 日
I have attached the files below madhan ravi

サインインしてコメントする。

採用された回答

David
David 2019 年 9 月 3 日
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 件のコメント
David
David 2019 年 9 月 3 日
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 2019 年 9 月 3 日
Sure thank you David

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by