在MATLAB中我有一个像这样的单元格数组
a = { 1 2 2 3 4 5 [] []
2 4 5 4 3 2 4 5
4 5 4 3 4 [] [] []}
我希望以我得到的方式删除空元素:
a = { 1 2 2 3 4 5 2 4 5 4 3 2 4 5 4 5 4 3 4}
但是当我使用它时:a(cellfun(@isempty,a)) = [];
我得到的是:
a = {1 2 4 2 4 5 2 5 4 3 4 3 4 3 4 5 2 4 5}
这不是我想要的
答案 0 :(得分:2)
你可以试试这个: A(~cellfun('isempty',A))
答案 1 :(得分:2)
问题是线性索引在行的方向上运行,即它贯穿第一个列,然后通过第二列等。
当您在向量上调用reshape
时,您可以看到这一点:
>> reshape([1 2 3 4 5 6 7 8 9],3,3)
ans =
1 4 7
2 5 8
3 6 9
要获得所需的结果,您需要在索引之前转置a
。
a = a';
a(cellfun(@isempty,a)) = [];