How to delete specific cells according to the condition from cell array?

4 views (last 30 days)
CheshireM
CheshireM on 23 Sep 2021
Commented: the cyclist on 29 Sep 2021
I have a cell array test (4x189).
Each cell is a double array of different sizes. I want to delete all the cells, that look like this (basically, they are all 7x4, the same looking, but different numbers):
NaN 1 0.437500000000000 0
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN 8 NaN NaN
NaN 719 NaN NaN
NaN 719 NaN NaN
NaN NaN NaN NaN
Could you, please, help me to do that?
Thank you so much!
  3 Comments
CheshireM
CheshireM on 23 Sep 2021
Basically, I am trying to solve the problem of removing sheets from Excel file that satisfy specific condition (B6=B7).

Sign in to comment.

Accepted Answer

the cyclist
the cyclist on 24 Sep 2021
This line of code will identify the cell locations that have a 7x4 array, having those two elements equal:
deleteIdx = cellfun(@(x)(x(5,2)==x(6,2))&&all(size(x)==[7,4]),test);
It's still not perfectly clear to me what you prefer as output, but maybe this is good enough.
  6 Comments
the cyclist
the cyclist on 29 Sep 2021
Did you do the preallocation step?
output = cell(size(test));
Also, you said you wanted empty cells, but now you say you want NaN. Which is it?
Can you upload your 4x189 array, to work on directly?

Sign in to comment.

More Answers (1)

Chunru
Chunru on 24 Sep 2021
If you want to keep the output as a cell array (as the input), you cannot delete them, but you can assign them to empty array.
for j=1:189
for i=1:4
if all(size(test{i,j})==[7 4]) && test{i,j}(5,2)==test{i,j}(6,2)
test{i,j} = [];
end
end
end

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!