# how to delete a row in a cell array

11 views (last 30 days)
hjo on 4 Jul 2020
Answered: Image Analyst on 4 Jul 2020
Hi I am trying to delete rows depending on the two lowests rows in a column...
A = {'rowcount' 'one' 'two' 'three'; 'rowone'   ; 'rowtwo'   ; 'rowthree'   ; 'rowfour'   ;}
based on the third column, I want to delete the lowest two rows and return this
B = {'rowcount' 'one' 'two' 'three'; 'rowtwo'   ; 'rowthree'   ;}

Walter Roberson on 4 Jul 2020
[~,idx] = sort(cell2mat(A(2:end,3)));
A(idx(1:2)+1,:) = [];

Image Analyst on 4 Jul 2020
Since your question is ambiguous, I've done it for you both ways:
A = {'rowcount' 'one' 'two' 'three'; 'rowone'   ; 'rowtwo'   ; 'rowthree'   ; 'rowfour'   ;}
B = {'rowcount' 'one' 'two' 'three'; 'rowtwo'   ; 'rowthree'   ;}
% Remove rows based on 2 lowest values in column 3 (like you said)
col3 = [A{2:end, 3}];
[sortedCol3, sortOrder] = sort(col3, 'ascend');
B = A; % Initialize
B(sortOrder(3:end),:) = [] % Remove rows 2 and 5 by setting them to null.
% Remove rows based on 2 lowest values in column 4
% (like you showed in your example, contrary to what you said.)
col4 = [A{2:end, 4}];
[sortedCol4, sortOrder] = sort(col4, 'ascend');
B = A; % Initialize
B(sortOrder(3:end),:) = [] % Remove rows 2 and 5 by setting them to null.