2016-12-21 6 views
0

Ich möchte Struktur in Matlab verwenden, aber in der ersten Iteration wird es korrekt ausgeführt und in anderen Iteration geben Sie diese Nachricht.verwenden Struktur in Matlab

1x2 struct Array mit Feldern:

mein Code:

for i=1:lenfd 
    currow=rees(i,:) 
    maxcn=max(currow) 
     if maxcn~=0 
     maxin=find(currow==maxcn) 
     ress(i).x =maxin 
     end 
    end 

Ihnen danken.

Antwort

3

Diese Nachricht ist keine Warnung oder ein Fehler. Das ist nur MATLAB, das die Ausgabe einer Operation druckt. Und es tut, dass standardmäßig, wenn Sie es unterdrücken, indem Sie ein Semikolon an den Befehl anhängen:

for ii = 1:lenfd 

    currow = rees(ii,:); % <=== NOTE: semicolons at the end 
    maxcn = max(currow); 

    if maxcn ~= 0 
     ress(ii).x = find(currow==maxcn); 
    end 

end 

Beachten Sie, dass max() 2 Ausgänge haben kann, der zweite Ausgang der erste Index in das Array zu sein, wo das Maximum aufgetreten. Wenn Sie im Voraus wissen, dass ein Maximum nur einmal auftreten wird, können Sie den Anruf auf find() überspringen und den zweiten Ausgang von max() verwenden.

+0

danke. Ich benutze Semikolon nicht, weil ich Ergebnis jeden Schritt sehen möchte. max pro Iteration gibt einen Wert zurück, maxcn kann jedoch viele Werte enthalten. Mein Code gibt manchmal diesen Fehler " Feldzuweisung zu einem nicht-Struktur-Array-Objekt." – sara

+0

@sara Wenn das Ihre Fehlermeldung ist, warum haben Sie dann nach einer anderen Nachricht gefragt? –

+0

werden beide in verschiedenen Ausführungen dieses Codes gezeigt – sara

Verwandte Themen