Il codice che hai pubblicato sembra non funzionare come ti aspetti.
A parte il fatto che i campi della struttura vengono chiamati semplicemente "f1", "f2", "f3" ecc. e non "field1", "field2", "field3" ecc. sembra anche che generi dei campi duplicati, ad esempio "f13" ed "f14" contengono entrambi il valore "127" il quale, nel vettore di esempio che hai pubblicato non risulta essere un singolo valore tra uno po più "0".
Se nel vettore di input i valori tra gli "0" sono già ordinati, puoi semplicemente memorizzare la posizione degli "0" con la funzione "find" e creare un loop che scandisca tale vettore, assegnando direttamente i valori del vettore compresi nei vari intervalli ai campi della struttura.
Per gestire il caso di due o più "0" consecutivi, basta aggiungere un controllo sui dati estratti: se è "empty" vuol dire che sei in presenza di due "0" consecutivi e, quindi, non devo cerare un campo nella struttura.
Una possibile implementazione potrebbe essere:
% Inizializzazione contatore campi
cnt=0;
% Ricerca degli "0"
z=find(SS == 0)
% Verifica della prima serie di "0"
tmp=SS(1:z(1)-1)
% Se non ci sono "0" viene creato il primo campo della struttura
if(~isempty(tmp))
cnt=cnt+1;
struct_00_.(['field' num2str(cnt)])=tmp
end
% Loop sui gruppi di valori delimitati dagli "0"
for i=1:length(z)-1
tmp=SS(z(i)+1:z(i+1)-1)
% Se non ci sono "0" viene creato l'1-esimo campo della struttura
if(~isempty(tmp))
cnt=cnt+1;
struct_00_.(['field' num2str(cnt)])=tmp
end
end