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

Funktion liefert zu wenig Outputs

 

incubus
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2014, 17:50     Titel: Funktion liefert zu wenig Outputs
  Antworten mit Zitat      
Hallo,
ich soll für einen Programmierkurs eine Funktion in Matlab schreiben, welche eine obere Schranke für Schadstoffe berechnen soll.
Als Eingabe bekommt es eine Zeitschrittweite sowie einen Endzeitpunkt und als Ausgabe soll es einen (Schadstoff-)Massevektor sowie einen Zeitvektor liefern. Ausrechnen tut es auch alles ganz Prima, nur wird seltsamerweise immer nur einer der Vektoren ausgegeben, und zwar der, der in meiner Klammer als erstes drinsteht. Hier mein Programm:


Code:
function [Massevek, Zeitvek] = SchrankeOben( t, tend )  %hier würde jetzt Massevek ausgegeben werden und Zeitvek nicht
m0=195.84;
ms=0.51;
T=384;
Zeitvek=[];
Massevek=[];
lamb=(log(2)/55);

    for k=0:t:tend     %index k1 zählt mit Zeitschritt t bis zum Zeitpunkt tend hoch
        Zeitvek=[Zeitvek, k];  %speichert einzelne Komponenten von delta t im Zeitvektor ab
    end
   
   
    for n=Zeitvek
        if n==0
            mi=m0;                              %zur Zeit t=0 wird m0 eingesetzt
           Massevek=[Massevek,mi];
        else
        mi= 1/(1+t/ T)*(mi*exp(-lamb*t)+ms*t);  %bei erstem Durchlauf wird m0 als mi eingesetzt
        Massevek=[Massevek, mi];
        end
    end
               

    end


Sieht jemand, woran das liegt? Weiß echt nichtmehr weiter :/

Vielen Dank schonmal für die Hilfe und Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.05.2014, 19:29     Titel:
  Antworten mit Zitat      
Hallo,

du musst die Funktion schon auch mit zwei Rückgabeargumenten aufrufen:

Code:
[out1, out2] = SchrankeOben(...)


Warum setzt du eigentlich nicht direkt
Code:
Zeitvek = 0:t:tend;

?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
incubus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2014, 20:48     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

du musst die Funktion schon auch mit zwei Rückgabeargumenten aufrufen:

Code:
[out1, out2] = SchrankeOben(...)


Warum setzt du eigentlich nicht direkt
Code:
Zeitvek = 0:t:tend;

?

Grüße,
Harald



Hallo Harald,
erst einmal Danke für deine Antwort.

Zu 1: Habe ich das in meiner Funktion mit [Massevek, Zeitvek]=SchrankeOben(..) (siehe erste Zeile des Codes) nicht schon getan?

Zu deinem 2. Punkt: stimmt das ginge einfacher, danke Smile. Bin erst seit Anfang dieses Semesters mit Matlab in Kontakt getreten, manchmal denkt man da noch zu umständlich:P

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.05.2014, 21:18     Titel:
  Antworten mit Zitat      
Hallo,

zu 1.: die erste Zeile ist die Funktionsdeklaration, ich rede aber vom Funktionsaufruf
http://www.mathworks.com/help/relea.....files.html#zmw57dd0e27464

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
incubus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2014, 22:34     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist, ich habe Matlab über eine Lizenz von der Uni, dafür musste ich kein extra Benutzerkonto dort anlegen und kann somit die Seite nicht einsehen. Hast du einen kurzen Tipp für mich, wie ich das anpassen kann?

Danke und Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.05.2014, 22:45     Titel:
  Antworten mit Zitat      
Hallo,

Tipp: siehe oben.

In der Hilfe unter:
MATLAB --> Programming Scripts and Functions --> Function Basics --> Examples and How to --> Create Functions in Files --> Call a Function.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
incubus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2014, 23:00     Titel:
  Antworten mit Zitat      
Hi,

danke für die Mühe, hab die Tipps jetzt in der Doc gefunden, allerdings stehe ich wohl total auf dem Schlauch..du beziehst dich doch hierauf oder?
"If your function returns more than one output, enclose the output names in square brackets, such as function [one,two,three] = myfunction(x)" (Zitat Matlab doc).

Ich verstehe nicht so richtig, was da jetzt der Unterschied zur Funktionsdeklaration ist und wo genau mein Fehler liegt.

Danke und Gruß
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: 20.05.2014, 23:08     Titel:
  Antworten mit Zitat      
funktions aufruf und funktions deklaration sind 2 unterschiedliche sachen.
harald hat dir bereits gesagt was du machen musst.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
incubus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 05.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2014, 09:15     Titel:
  Antworten mit Zitat      
Okay jetzt hast geklappt, danke euch
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.