Removing a row from a matrix based on certain conditions

21 views (last 30 days)
I have three variables t_SS, t_A, and G and all of them have the size of 10000 X 8. I'm looking for away to remove the entire row in G if any of the following coniditions is met. Below is my code and does not work properly since if G is deleted in the first conidtion, the number of index change.
Not sure how to fix it and thanks in advance.
Index_N_tS = find(t_SS < 0);
Index_N_tA = find(t_A < 0);
Index_less_A = find(t_A < t_SS);
I have to check these cells are not empty:
indx1_tS = isempty(Index_N_tS);
indx1_tS = isempty(Index_N_tS);
indx3_tA = isempty(Index_less_A)
% if any of the condition is met, remove the entire row in G
if indx1_tS == 0
G(Index_N_tS ,:) = [];
end
if indx2_tA == 0
G(Index_N_tA,:) = [];
end
if indx3_tA == 0
G(Index_less_A,:) = [];
end
Thank you

Accepted Answer

Stephen23
Stephen23 on 26 Jan 2019
Edited: Stephen23 on 26 Jan 2019
You do not explain how you want to handle the 8 columns in your logical comparisons: do you only want to remove the entire row if any column meets that condition, or if all columns meet that condition?
Here is a solution that works for any column meeting those conditions:
idx = any(t_SS < 0 | t_A < 0 | t_A < t_SS, 2);
G(idx,:) = []
You will need to decide if any or all or some other column handling is what you need.
  2 Comments
Yaser Khojah
Yaser Khojah on 26 Jan 2019
so if any of the condition met, I will remove the entire row which means all the columns.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!