You can do this in a pretty one-liner:
m(any(cellfun(@(x)x(1)==0, m),2), :) = []
Alternatively:
m(any(~cellfun(@ischar, m),2), :) = []
which is a little faster.
If you can be sure that only the first column will contain zero, use
m = m(cellfun(@ischar, m(:,1)),:)
and finally you can use
m = m(cellfun('isclass', m(:,1), 'char'),:)
which looks "old" but actually has great performance.
Testing these thousands of times in your array of examples gives
Elapsed time is 1.382801 seconds. Elapsed time is 0.138519 seconds. Elapsed time is 0.075245 seconds. Elapsed time is 0.014674 seconds.
source share