Hi,
I am a beginner in Matlab. I have a matrix that has 2 columns and thousands of rows.
I need to delete the rows based on the following conditions:
1. if a value of column 1 is superior at 100 and inferior at 550 => delete this row
2. if a value of column 2 is superior at 100 and inferior at 420 => delete this row
Based on
http://au.mathworks.com/matlabcentral/answers/105768-how-can-i-delete-certain-rows-of-a-matrix-based-on-specific-column-values#answer_226615
I tried :
% Specify conditions
TF1 = (100 < res_select(:,1)) & (res_select(:,1) < 550) ;TF2 = (100 < res_select(:,2)) & (res_select(:,2) < 420) ;% combine them
TFall = TF1 & TF2 ;% remove
res_final = res_select ;res_final(TFall,:) = [] ;
But it's not working I don't understand why. Should I try to create a loop instead of logical indexing ? I tried this but not working neither :
% Specify conditions for i = 1:length(res_select(:,1)) TF1 = (100 < res_select(i,1)) & (res_select(i,1) < 550) ; end for i = 1:length(res_select(:,2)) TF2 = (100 < res_select(i,2)) & (res_select(i,2) < 420) ; end % combine them TFall = TF1 & TF2 ; % remove res_final = res_select ; res_final(TFall,:) = [] ;
Thank you for your help!
Best Answer