How to remove indexed set of rows from a cell array

1 view (last 30 days)
james sinos
james sinos on 29 Aug 2021
Edited: Wan Ji on 29 Aug 2021
i have a cell array "corb " = 10×5 cell array
1- first question :
i want to find the indexes of all elements in the first column , 100000< element <300000
i tried this it doesn't work : row_indices = find(cell2mat(corb(:,1))>100000 & corb(:,1))<300000)
2- Second question :
once i have the vector containing row indexes values lets say its V=[ 3;5;10]
I would like to create a new cell array that has all of the rows from the original cell array EXCEPT for the rows specified by V. ( remove those rows).
so how to proceed

Answers (2)

the cyclist
the cyclist on 29 Aug 2021
Edited: the cyclist on 29 Aug 2021
% Identify rows
row_indices = find(cell2mat(corb(:,1))>100000 & cell2mat(corb(:,1))<300000);
% Define new array that is the same as corb, but and remove rows
corb2 = corb;
corb2(row_indices,:) = [];

Wan Ji
Wan Ji on 29 Aug 2021
Edited: Wan Ji on 29 Aug 2021
Try this
logical_indices = arrayfun(@(i)corb{i,1}(1)>100000&corb{i,1}(1)<300000,(1:1:size(corb))');
row_indices = find(logical_indices); % actually this line can be deleted to save time
corb2 = corb(~logical_indices,:); % this is what you want

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!