WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Output argument "t_3" (and maybe others) not assig

 

sipi
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 10.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 09:30     Titel: Output argument "t_3" (and maybe others) not assig
  Antworten mit Zitat      
Hallo,

ich habe mal wieder ein Problem, bei dem ich nicht weiter weiß.
Mein Programm hier bekommt eine Funktion 'x' übergeben und diese besitzt an der Stelle 't_2' ein Maximum mit dem Wert 'maxt_2'. Es soll nach einer Stelle 't_3' gesucht werden, an dem der Wert der Funktion das nächste mal 'maxt_2' überschreitet. Jedoch falls 'maxt_2' genau 1 ist, wird t_3=t_2 gesetzt!

Code:
function [t_3] = soc_eq_find_a(x, t_2, maxt_2)


i = t_2 + 1;
stop = size(x);
stop = stop(2);

while i < stop
   
    if maxt_2 == 1
        t_3 = t_2;
        break
    else
   
       
   
        if x(i) >= x(t_2)
           t_3 = i;
           break
        elseif i == size(x(2))
           t_3 = i;
           break
        end
       
        i = i+1;
       
    end
   
   
end


Matlab spuckt mir immer die gleiche Fehlermeldung aus und ich weiß nicht wieso:

Code:
Error in soc_eq_find_a (line xx)
i = t_2 + 1;

Output argument "t_3" (and maybe others) not assigned during call to
"..."



Vielleicht kann mir ja einer von euch weiterhelfen!
Vielen Dank im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 27.03.2012, 09:45     Titel:
  Antworten mit Zitat      
Hallo Matlab meint hier, dass es ein Fall auftritt oder auftreten kann, wo t_3 nicht existiert, was zum Fehler führt.

Ausgabeparameter muss immer existieren, sonst kracht es. Bei dir ist Rückgabewert immer in IF-Bedingung verpackt, also kann der Fall komme, wo t_3 nicht gesetzt wird, was zwangsläufug zum Fehler führt.
Deshalb setzte t_3 vor WHILE-Loop auf Leeres Array

Code:

function [t_3] = soc_eq_find_a(x, t_2, maxt_2)
t_3=[]
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 27.03.2012, 09:53     Titel:
  Antworten mit Zitat      
den fehler kann ich nicht reproduzieren. ich erhalte ihn bei ausführen deines codes nicht.
kleine anmerkung am rand. i und stop sind matlab intern schon vergeben und sollten daher nicht neu belegt werden. da sie dann nicht mehr benutzt werden können.
Code:
stop = size(x);
stop = stop(2);
ist das selbe wie
Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
sipi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 10.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 09:57     Titel:
  Antworten mit Zitat      
Dankeschön! denny hat meine Frage schon hinreichend beantwortet!
Auch Danke für den Tipp!
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 27.03.2012, 09:59     Titel:
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:
den fehler kann ich nicht reproduzieren. ich erhalte ihn bei ausführen deines codes nicht.
kleine anmerkung am rand. i und stop sind matlab intern schon vergeben und sollten daher nicht neu belegt werden. da sie dann nicht mehr benutzt werden können.
Code:
stop = size(x);
stop = stop(2);
ist das selbe wie
Code:


z.b. solcher Aufruf führt zum Fehler
Zitat:
t=soc_eq_find_a([1 2 3], 2, 3)
Error in soc_eq_find_a (line 4)
i = t_2 + 1;

Output argument "t_3" (and maybe others) not assigned during call to
"C:\users\matlab\soc_eq_find_a.m>soc_eq_find_a".
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.