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

Probleme bei fplot und nested functions

 

Daniel1337

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2017, 17:10     Titel: Probleme bei fplot und nested functions
  Antworten mit Zitat      
Hallo,

ich habe das Problem, dass ich folgenden (für meine Frage vereinfachten) Code nicht mittels fplot graphisch darstellen kann.

Die Überlegung ist, dass die Funktion ro() (abhängig vom betrachteten Intervall) durch mehrere (Unter-)Funktionen z beschrieben wird.

Code:

aa = @(bb) ro(bb) .* bb;

fplot(aa, [400 600]);

function z = ro(h)

if (h >= 350) && (h < 400)
    z = 4*h;
elseif (h >= 400) && (h < 450)
    z = 3*h;
elseif (h >= 450) && (h < 500)
    z = 2*h;
elseif (h >= 500) && (h <= 600)
    z = 1*h;
else
    disp('Values exceed specified range (400k - 600k).')
end

end
 


Ich erhalte beim Ausführen immer die Fehlermeldung:
Code:

Values exceed specified range (400k - 600k).
Output argument "z" (and maybe others) not assigned during call to "Untitled5>ro".

Error in Untitled5>@(bb)ro(bb)

Error in fplot>splitFunctionHandle (line 255)
  fnAtZero = fn(0);

Error in fplot (line 115)
        fn{1} = splitFunctionHandle(fn{1});

Error in Untitled5 (line 3)
fplot(aa, [400 600]);
 


Verwende ich ezplot anstelle von fplot funktioniert es.
Worin liegt mein Fehler? Wie kann ich ihn beheben?


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2017, 17:27     Titel:
  Antworten mit Zitat      
Hallo,

fplot versucht die Funktion auch bei 0 auszuwerten um zu verstehen, ob es eine skalare oder vektorwertige Funktion ist. Du kannst nach dem disp-Befehl
Code:
einfügen, und dann funktioniert es.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2017, 17:46     Titel:
  Antworten mit Zitat      
Danke Harald für deine schnelle Antwort,
das behebt auf jeden Fall mein Problem - fplot lässt sich jetzt benutzen!
Es entstehen nun jedoch eine ganze Reihe Warnungen.
Wodurch werden diese bei einem so simplen Code verursacht?
 
Harald
Forum-Meister

Forum-Meister


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

wenn der Code bei dir gleich läuft wie bei mir, dann produziert er eine Warnung:
Zitat:
Warning: Function fails on array inputs. Use element-wise operators to increase speed.


Die folgenden Zeilen geben dann den Ursprung dieser Warnung an.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2017, 18:23     Titel:
  Antworten mit Zitat      
Genau das erscheint bei mir auch. Ich bin leider nicht so Matlab-versiert als dass ich die folgenden Warnungen versteh.
Aber hauptsache der Code läuft erstmal, danke dafür!
 
Harald
Forum-Meister

Forum-Meister


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

wie gesagt, es ist nur eine Warnung. Das kannst du so verstehen, dass
etwas passiert ist, weil
Funktion A Funktion B aufgerufen hat, weil
Funktion B Funktion C aufgerufen hat, weil
Funktion C Funktion D aufgerufen hat (etc.)


Grüße,
Harald
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 - 2024 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.