【发布时间】:2013-04-23 00:17:54
【问题描述】:
我有一个大的 3D CELL ARRAY (x1),我必须删除空行。 我该怎么做?
我的单元格数组示例(变量的一些片段):
val(:,:,1) =
[20] [] [] [] [] [] [] []
[ 0] [] [] [] [] [] [] []
[ 0] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
(...)
val(:,:,42) =
[ 34225] [ 215] [ 0] [ 0] [ 0] [ 0] [ 0] [ 0]
[ 85200] [ 545] [ 0] [ 0] [ 0] [ 0] [ 0] [ 0]
[ 65074] [ 190] [ 1000] [ 0] [ 0] [ 0] [ 0] [ 0]
[ 81570] [ 1385] [ 2475] [ 0] [ 0] [ 0] [ 0] [ 0]
[ 67236] [ 530] [ 365] [ 0] [ 0] [ 0] [ 0] [ 0]
[ 61338] [ 0] [ 100] [ 0] [ 0] [ 0] [ 0] [ 0]
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
在这种情况下,我想排除 (:,:,1) 的第 4 行、(:,:,42) 的最后三行以及这些变量中的所有其他行。
我试过了
x1(all(all(cellfun((@isempty,x1),2),:,:) = [];
但它给了我以下错误:
错误:表达式或语句不正确——可能 不平衡的(、{ 或 [.
PS:我不能使用"==",因为它是一个元胞数组。
提前致谢
【问题讨论】:
-
好吧,算上括号,你有 5x
(而只有 3x)... -
使括号正确并不能解决看起来的错误
-
请在纠正括号问题后发布您得到的内容。
-
谢谢!准备测试并回答这个问题
-
我已经测试了这种可能性:
x1(all(all(cellfun((@isempty,x1),2),:,:))) = [];x1(all(all(cellfun((@isempty,x1),2),:),:)) = [];x1(all(all(cellfun((@isempty,x1),2)),:,:)) = [];x1(all(all(cellfun((@isempty,x1),2)),:),:) = [];所有这些都给了我和以前一样的错误
标签: matlab 3d cell-array