Remove zero entries from cell arrays
显示 更早的评论
Suppose I have a m x n cell array. Some of these cells contain a 1 x 2 matrix of values other cells contain just a zero. I want to be able to delete all cells that contain zeros and have the cell array automatically re-size when finished. If you copy and past this in the command window you can see what I'm trying to accomplish. I've tried using ismember to look for the zeros but had no luck. I'm not very good when it comes to doing operations on cells. I need this to remain a cell array also. Thanks for any help.
points = {[-24.7697910000000,-15.8191235000000],0,[-12.6771670000000,20.4587480000000],0;0,[-20.6771670000000,-3.54125200000000],[-11.9803417500000,-14.5401785500000],0;0,[-20.6771670000000,-3.54125200000000],[4.32283300000000,-1.04125200000000],0;0,[13.0196582500000,-12.0401785500000],0,[-24.7697910000000,-15.8191235000000];[-11.9803417500000,-14.5401785500000],0,[4.32283300000000,-1.04125200000000],0;0,[-12.6771670000000,20.4587480000000],0,[13.0196582500000,-12.0401785500000];}
采纳的回答
更多回答(1 个)
Jan
2012-4-23
Another idea:
points = {[-24.7697910000000,-15.8191235000000],0, ...
[-12.6771670000000,20.4587480000000], 0; ...
0,[-20.6771670000000,-3.54125200000000], ...
[-11.9803417500000,-14.5401785500000],0; ...
0,[-20.6771670000000,-3.54125200000000], ...
[4.32283300000000,-1.04125200000000],0; ...
0,[13.0196582500000,-12.0401785500000],0, ...
[-24.7697910000000,-15.8191235000000]; ...
[-11.9803417500000,-14.5401785500000],0, ...
[4.32283300000000,-1.04125200000000],0; ...
0,[-12.6771670000000,20.4587480000000],0, ...
[13.0196582500000,-12.0401785500000]};
C = points(cellfun(@(x) ~isequal(x, 0), points));
"Automatically resize" is not unique: Should the number of rows or columns be adjusted?
C = reshape(C, size(points, 1), []); % For equal column length
5 个评论
Sean de Wolski
2012-4-23
I like this approach better
Harold
2012-4-23
Jan
2012-4-24
Perhaps: D = transpose(reshape(C, 4, []))
Harold
2012-4-25
Jan
2012-4-25
Dear Harold, I'm sure you can solve this problem by your own using the commands TRANSPOSE, RESHAPE and/or PERMUTE. The main problem is solved by the CELLFUN call, and the finetuning is up to you.
类别
在 帮助中心 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!