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 mit importierten Variablen

 

NiMu
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.07.18
Wohnort: Bielefeld
Version: ---
     Beitrag Verfasst am: 26.07.2018, 12:19     Titel: Funktion mit importierten Variablen
  Antworten mit Zitat      
Hallo zusammen,

ich bin mittlerweile etwas frustiert und suche hier deshalb Hilfe.
Natürlich habe ich schon Google benutzt, aber ich finde keine Beitrag der auf meinen Fehler genau passt (möglicherweise habe ich auch das Problem nicht genau genug beschreiben können).

Wie dem auch sei. Ich möchte die Stoffdaten eines beliebigen Mediums in Matlab laden (über eine .dat Datei) und anschließend mit der PPDS-Gleichung (empirische Gleichung zu berechnung von Stoffdaten in Abhängigkeit der Temperatur)

Die dafür benötigten Koeffizienten sind als in der .dat-Datei gespeichert und werden in die Variable "medium" geladen (6x7 double). Damit ich beliebige Temperaturen einsetzen kann, möchte ich nun die PPDS-Gleichungen als Funktionen implementieren.
Wenn ich das mache bekomme ich den untenstehenden Fehlercode.
Kann mir jemand helfen?


Code:
load medium.txt

T_tr = medium(1,1);
p_tr = medium(1,2);
T_c = medium(2,1);
P_c = medium(2,2);
rho_c = medium(2,3);

rho(300)

function y1 = rho(x)
y1 = medium(2,3) + medium(3,1)*(1-x./medium(2,1))^0.35 + medium(3,2)*(1-x./medium(2,1))^(2/3) + medium(3,3)*(1-x./medium(2,1)) + medium(3,4)*(1-x./medium(2,1))^(4/3);
end
 


---------------------------------------------
Fehler:
---------------------------------------------
Code:
Undefined function or variable 'medium'.

Error in Rohr_uebertrager>rho (line 27)
y1 = medium(2,3) + medium(3,1)*(1-x./medium(2,1))^0.35 + medium(3,2)*(1-x./medium(2,1))^(2/3) + medium(3,3)*(1-x./medium(2,1)) +
medium(3,4)*(1-x./medium(2,1))^(4/3);

Error in Rohr_uebertrager (line 24)
rho(300)

---------------------------------------------

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


J0nas
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 10.09.15
Wohnort: ---
Version: ab 2016a
     Beitrag Verfasst am: 26.07.2018, 13:02     Titel:
  Antworten mit Zitat      
Hallo NiMu,

die erste Fehlermeldung tritt auf weil du keine Variable medium an deine Funktion übergibst. Schau dir mal die Matlab Docu zu function an, da siehst du auch wie man auf functions zugreift. Und um eine mathematische Funktion zu beschreiben/berechnen brauchst du keine function zu schreiben.

Wenn du vorher der Variable "x" einen Wert zuweisen möchtest und darüber dann deine Gleichung berechnen möchtest brauchst du daher keine function. Da reicht ein:
Code:

x = 300;
y1 = medium(2,3) + medium(3,1)*(1-x/medium(2,1))^0.35 + medium(3,2)*(1-x/medium(2,1))^(2/3) + medium(3,3)*(1-x/medium(2,1)) + medium(3,4)*(1-x/medium(2,1))^(4/3);

Und schon erhälst du ein berechnetes y1 Cool

Ich hoffe, das ist das was du bezwecken wolltest Smile

Grüße
Jonas
_________________

1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable

Zuletzt bearbeitet von J0nas am 26.07.2018, 13:35, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
NiMu
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.07.18
Wohnort: Bielefeld
Version: ---
     Beitrag Verfasst am: 26.07.2018, 13:31     Titel:
  Antworten mit Zitat      
Hi Jonas,

danke für die schnelle Antwort.
Dann war das ein Denkfehler von mir. Ich habe vermutet, dass die Variable medium bekannt ist, da sie bereits definiert war. Auch versuche sie global zu definieren sind gescheitert. Aber nun geht es.

Und die Funktion tut was sie soll
rho(300,wasser) gibt die Dichte für Wasser bei 300 K aus, perfekt Smile

vielen Danke Wink

Code:
rho(300,medium)

function y1 = rho(x,table)
y1 = table(2,3) + table(3,1)*(1-x./table(2,1))^0.35 + table(3,2)*(1-x./table(2,1))^(2/3) + table(3,3)*(1-x./table(2,1)) + table(3,4)*(1-x./table(2,1))^(4/3);
end


[EDITED, Jan, Bitte code-Umgebung verwenden - Danke!]
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.