Deleting empty rows in a 3D Cell Array in MatLab
Afficher commentaires plus anciens
I have a large 3D CELL ARRAY (x1) which I have to delete the empty rows. How can I do this?
Example of my cell array (some pieces of the variable):
val(:,:,1) =
[20] [] [] [] [] []
[ 0] [] [] [] [] []
[ 0] [] [] [] [] []
[] [] [] [] [] []
(...)
val(:,:,42) =
[ 34225] [ 215] [ 0] [ 0] [ 0] [ 0]
[ 85200] [ 545] [ 0] [ 0] [ 0] [ 0]
[ 65074] [ 190] [ 1000] [ 0] [ 0] [ 0]
[ 81570] [ 1385] [ 2475] [ 0] [ 0] [ 0]
[ 67236] [ 530] [ 365] [ 0] [ 0] [ 0]
[ 61338] [ 0] [ 100] [ 0] [ 0] [ 0]
[] [] [] [] [] []
[] [] [] [] [] []
[] [] [] [] [] []
In this case, I want to exclude the 4th row of `(:,:,1)`, the three last rows from `(:,:,42)` and all the others from these variable.
I've tried
x1(all(all(cellfun((@isempty,x1),2),:,:) = [];
But it gave me this following error:
Error: Expression or statement is incorrect--possibly unbalanced (, {, or [.
PS: I cannot use `"=="` because its a cell array.
Thanks in advance
2 commentaires
You cannot erase the 4th row of val(:,:,1) without erasing as well the 4th row for all valid 3rd indices. In your example, doing this would erase val(4,:,42) as well.. is it what you want to do?
Also, your example should show that val(:,:,1) and val(:,:,42) have the same size (for val to be a 3D cell array). Are you sure that you don't have a cell array of 2D cell arrays? (you index val as a 3D cell array though)
Luiz
le 23 Avr 2013
Réponse acceptée
Plus de réponses (1)
Luiz
le 25 Avr 2013
0 votes
Catégories
En savoir plus sur Logical dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!