La condizione che testi nel blocco "if" è impostata in modo errato, dovrebbe essere
if(A(i) == 0)
Se vuoi usare un ciclo "for" (e, come in molti casi in MatLab, non è necessario) puoi impostarlo come segue:
cnt=0;
for i=1:length(A)
if(A(i) ~= 0)
cnt=cnt+1;
D(cnt)=A(i);
end
end
Il modo più semplice, però, è sfruttare le proprietà di "indexing" di MatLab:
B=A(A ~= 0)
in questo modo vengono direttamente assegnate al vettore B i valori di A diversi da 0.
Un'altra possibilità simile, ma non molto sensata, è:
B=A;
B(B==0)=[]
in questo caso crei il vettore B come una copia del vettore A e poi cancelli (con "[]") i valori uguali a 0.