How to delete specific cells according to the condition from cell array?
14 次查看(过去 30 天)
显示 更早的评论
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!
采纳的回答
the cyclist
2021-9-24
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 个评论
the cyclist
2021-9-29
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?
更多回答(1 个)
Chunru
2021-9-24
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
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!