Füllen Sie das Zellenarray mit Elementen, die auf den Indizes MATLAB @ basiere

Ich habe ein n * m Zellenarray Cell_In:

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

* -> steht für eine leere Zeichenfolge (''). Folgendes brauche ich:

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

Für eine bestimmte Spalte muss ich die leere Zelle mit der vorherigen nicht leeren Zelle füllen, bis eine andere nicht leere Zelle gefunden wird. Es folgt der Code, den ich geschrieben habe.

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'];

Es funktioniert gut, aber ich möchte die beste Lösung wissen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage