MATLAB Answers

how to delete a row in a cell array

11 views (last 30 days)
hjo
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' [1] [2] [3]; 'rowtwo' [10] [11] [12]; 'rowthree' [7] [8] [9]; 'rowfour' [4] [5] [6];}
based on the third column, I want to delete the lowest two rows and return this
B = {'rowcount' 'one' 'two' 'three'; 'rowtwo' [10] [11] [12]; 'rowthree' [7] [8] [9];}

  0 Comments

Sign in to comment.

Answers (2)

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

  0 Comments

Sign in to comment.


Image Analyst
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' [1] [2] [3]; 'rowtwo' [10] [11] [12]; 'rowthree' [7] [8] [9]; 'rowfour' [4] [5] [6];}
B = {'rowcount' 'one' 'two' 'three'; 'rowtwo' [10] [11] [12]; 'rowthree' [7] [8] [9];}
% 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.

  0 Comments

Sign in to comment.


Translated by