How to remove indexed set of rows from a cell array

2 Ansichten (letzte 30 Tage)
james sinos
james sinos am 29 Aug. 2021
Bearbeitet: Wan Ji am 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

Antworten (2)

the cyclist
the cyclist am 29 Aug. 2021
Bearbeitet: the cyclist am 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 am 29 Aug. 2021
Bearbeitet: Wan Ji am 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

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Produkte


Version

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by