Rellenar matriz de celdas con elementos basados en los índices de MATLAB

Tengo una matriz de celdas n * m Cell_In:

a b
* *
* *
c *
* d
* *
* f

* -> representa una cadena vacía (''). Esto es lo que necesito:

a b
a b
a b
c b
c d
c d
c f

Para una columna en particular, necesito llenar la celda vacía con la celda no vacía anterior hasta que se encuentre otra celda no vacía. El siguiente es el código que escribí.

b = ~cellfun(@isempty,a);
c = [find(b(:,1) == 1);size(a,1)+1]; e = diff(c);
d = [find(b(:,2) == 1);size(a,1)+1]; f = diff(d);
s1 = ''; s2 = '';
for i = 1:length(e)
    s1 = [s1,repmat(a(c(i),1),1,e(i))];
end

for i = 1:length(f)
    s2 = [s2,repmat(a(d(i),2),1,f(i))];
end
Cell_Out = [s1',s2'];

Está funcionando bien pero quiero saber la mejor solución?

Respuestas a la pregunta(2)

Su respuesta a la pregunta