2016-10-03 2 views
0

Ich habe ein Array 100x1, die mit 100 Nullen beginnen,Entfernen von unerwünschten Elementen vom Ende des Arrays?

roots = zeros(100, 1); 

I, in der dann in eine Schleife habe ein Element dieses Array bei jeder Iteration gefüllt wird.

for iRoots = 1:100 
    roots(iRoots) = a; 

Allerdings, wenn eine bestimmte Bedingung die Schleife erfüllt ist beendet früh, und ich bin mit vielen unnötigen Nullen in dem Feld links.

charVals = [ 1 5 2 2 8 0 0 0 ... 0 ] 

Ich möchte nur die ersten fünf Nicht-Null-Elemente hält: Zum Beispiel könnte ich mit einem Wurzeln Array so enden werden. Wie lösche ich alle Nullen aus diesem Array?

+0

Also, wenn Sie nur die ersten fünf Nicht-Null-Elemente wollen, können Sie die Schleife nicht nur von '1: 5' ausführen und das Array mit' Nullen (5,1) 'initialisieren? – hbaderts

+0

Dies war nur ein Beispiel, es könnte sich herausstellen, dass es mehr oder weniger als fünf Elemente geben würde. – csss

Antwort

1

Wenn die Schleife beendet früh werden Sie noch den Wert des letzten ausgeführten Index haben, so tun, nur:

roots(iRoots:end) = []; 

Außer, wenn Sie für die Bedingungen prüfen eine Schleife vorzeitig zu beenden, könnte man eine Weile in Betracht ziehen Schleife statt einer for-Schleife.

Verwandte Themen