Если вы хотите удалить все строки в вашем массиве ячеек, где все ячейки пусты, вы можете использовать следующее:
a = { 1, 2; 3, 4; [], []}
emptyCells = cellfun('isempty', a);
a(all(emptyCells,2),:) = []
a =
[1] [2]
[3] [4]
Причина, по которой это не сработало в вашей формулировке, заключается в том, что при индексировании с помощью массива выходные данные преобразуются в вектор (поскольку нет гарантии, что будут удалены целые строки или столбцы, а не просто отдельные элементы где-либо ).