How to remove rows in a cell array with a number of Nans major than a threshold

5 views (last 30 days)
Hi guys, I have a cell array (see attached), and I want eliminate the row of the cell array, that contain a number of nan major than a threshold, ex 50, so if the cell in the cell array contain a number of NaN major of 50, i want to eliminate that row from the array. I tried different solutions, with cellfun but i did'nt understand how to set the treshold. Because for a matrix i did with function rmmissing, so I tried also this, but it does not work.

Accepted Answer

Dyuman Joshi
Dyuman Joshi on 12 Jun 2022
Edited: Dyuman Joshi on 12 Jun 2022
%random data
y={NaN(1,50);[zeros(1,5) NaN(1,35) ones(1,25)];[primes(100) NaN(1,37)];...
[0.5*(1+sqrt(5)) pi exp(1) NaN(1,55)]}
y = 4×1 cell array
{[ NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN]} {[ 0 0 0 0 0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]} {[ 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN]} {[1.6180 3.1416 2.7183 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN]}
idx=[];
for i=1:size(y,1)
if sum(isnan(y{i,1}))>=50 %checking the threshold condition
idx=[idx i]; %storing index of rows that cross the threshold
end
end
y(idx,:)=[] %deleting corresponding rows
y = 2×1 cell array
{[ 0 0 0 0 0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]} {[2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN]}

More Answers (0)

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!