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

If elseif else anweisung mit <= Bedingungen

 

lennart
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2011, 16:40     Titel: If elseif else anweisung mit <= Bedingungen
  Antworten mit Zitat      
Hallo,

ich schreibe grade ein Programm welches Kühlköper dimensioniert.

Ich benutze Matlab das erstemal und habe daher kaum Ahnung...

Ich wollte über if elseif anweisungen das programm anhand einer mittleren Temperatur Stoffwerte auswählen lassen.

So hatte ich es mir überlegt:

Code:
function [ k_visk, lambda_Luft , c_p , Pr , beta_Luft ] = Stoffwerte( T_m )
% Stoffwerte Summary of this function goes here
%  Auswahl der Stoffwerte in Abhaengigkeit von T_m

% c_p           -           J/kg*K    -     Warmekapazitaet von Luft
% lambda_Luft   -           W/m*K     -     Waermeleitfaehigkeit fuer Luft
% beta_Luft     -           1/K       -     Waermeausdehnungkoeffizient von Luft
% Pr            -            -        -     Prandtl - Zahl
% k_visk        -           m^2/s     -     Kinetische Viskositaet


T_s=T_m;
   
    if      ( T_s <= 293)
           
            k_visk = 153.5 * 10 ^ - 7;
            lambda_Luft = 25.69 * 10^-3;
            c_p = 1007;
            Pr = 0.7148;
            beta_Luft = 3.421 * 10^-3;
           

           
    elseif (293 < T_s <=  313)
   
   
            k_visk = 172.6 * 10 ^ - 7;
            lambda_Luft = 27.16 * 10^-3;
            c_p = 1007;
            Pr = 0.7122;
            beta_Luft = 3.2 * 10^-3;

    elseif  (313 < T_s <=  333)
   
            k_visk = 192.7 * 10 ^ - 7;
            lambda_Luft = 28.6 * 10^-3;
            c_p = 1009;
            Pr = 0.71;
            beta_Luft = 3.007 * 10^-3;

    elseif  (333 < T_s <=  353)
   
            k_visk = 213.5 * 10 ^ - 7;
            lambda_Luft = 30.01 * 10^-3;
            c_p = 1010;
            Pr = 0.7083;
            beta_Luft = 2.836 * 10^-3;
           
    elseif    ( 353 < T_s)  
   
            k_visk = 235.1 * 10 ^ - 7;
            lambda_Luft = 31.39 * 10^-3;
            c_p = 1012;
            Pr = 0.7070;
            beta_Luft = 2.683 * 10^-3;

    end

end

 



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


Leider nimmt er z.B. bei T_m = 333 oder höher immer die 2te elseif anweisung. Würde mich freuen wenn mir einer sagen kann wo mein fehler liegt.


Vielen Dank
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: 14.11.2011, 16:54     Titel:
  Antworten mit Zitat      
glaube du must das unterteilen
Code:
elseif (293 < T_s  && T_s<= 313)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 14.11.2011, 16:57     Titel:
  Antworten mit Zitat      
Code:
333 < T_s <= 353


erkennt der Interpreter als 2 nacheinander folgende Vergleiche. 333 ist kleiner als T_s, das Ergebnis ist 1 und das wiederum ist kleiner als 353. Abgabe schafft Winkow's Vorschlag.
Private Nachricht senden Benutzer-Profile anzeigen
 
lennart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2011, 17:19     Titel:
  Antworten mit Zitat      
Ah ja das macht Sinn Smile Danke

Ich habe es geändert, nur leider kommt jetzt folgende Fehlermeldung
die ich nicht Lösen kann Sad


Error in Stoffwerte (line 11)
T_s=T_m;

Output argument "k_visk" (and maybe others) not assigned during call to
"E:\Users\Speed-PC\Documents\MATLAB\Modellierung_Matlab-Code\Stoffwerte.m>Stoffwerte".

Error in testiteration (line 61)
[ k_visk, lambda_Luft , c_p , Pr , beta_Luft ] = Stoffwerte( T_m );


Wäre über Hilfe sehr erfreut Smile

Vieleicht habt ihr ja auch ne einfache Alternative wie ich Matlab die Stoffwerte auswählen lassen kann. Danke
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: 14.11.2011, 17:28     Titel:
  Antworten mit Zitat      
Code:
function [ out ] = Stoffwerte( T_m )
% Stoffwerte Summary of this function goes here
% Auswahl der Stoffwerte in Abhaengigkeit von T_m

% c_p - J/kg*K - Warmekapazitaet von Luft
% lambda_Luft - W/m*K - Waermeleitfaehigkeit fuer Luft
% beta_Luft - 1/K - Waermeausdehnungkoeffizient von Luft
% Pr - - - Prandtl - Zahl
% k_visk - m^2/s - Kinetische Viskositaet




if ( T_m <= 293)

out.k_visk = 153.5 * 10 ^ - 7;
out.lambda_Luft = 25.69 * 10^-3;
out.c_p = 1007;
out.Pr = 0.7148;
out.beta_Luft = 3.421 * 10^-3;



elseif (293 < T_m && T_m<= 313)


out.k_visk = 172.6 * 10 ^ - 7;
out.lambda_Luft = 27.16 * 10^-3;
out.c_p = 1007;
out.Pr = 0.7122;
out.beta_Luft = 3.2 * 10^-3;

elseif (313 < T_m && T_m<= 333)

out.k_visk = 192.7 * 10 ^ - 7;
out.lambda_Luft = 28.6 * 10^-3;
out.c_p = 1009;
out.Pr = 0.71;
out.beta_Luft = 3.007 * 10^-3;

elseif (333 < T_m && T_m<= 353)

out.k_visk = 213.5 * 10 ^ - 7;
out.lambda_Luft = 30.01 * 10^-3;
out.c_p = 1010;
out.Pr = 0.7083;
out.beta_Luft = 2.836 * 10^-3;

elseif ( 353 < T_m)

out.k_visk = 235.1 * 10 ^ - 7;
out.lambda_Luft = 31.39 * 10^-3;
out.c_p = 1012;
out.Pr = 0.7070;
out.beta_Luft = 2.683 * 10^-3;

end

end

 
Private Nachricht senden Benutzer-Profile anzeigen
 
lennart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2011, 17:44     Titel:
  Antworten mit Zitat      
Super VIELEN DANK!!!!

Ich komm mir schon so vor als würde ich nerven Sad

Nur jetzt schmeißt er mir in mein Hauptprogramm out als struktur raus.
Als 1*1 struct.
Als nächsten muss er nun die Werte benutzen, die in out stecken und ich noob^^ weiß natürlich nicht wie ich ihm das sage, bzw struct wieder in einzel werte auflöse.


Wäre toll wenn du mir das nochmal schreibst.
Dann sollte alles hinhauen
Private Nachricht senden Benutzer-Profile anzeigen
 
lennart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2011, 18:39     Titel:
  Antworten mit Zitat      
Also so siehts aus:

Code:

 [out] = Stoffwerte( T_m );

% Berechnung der Grashof Zahl
Grashof_Zahl = ((9.81 * ( T_j_max - T_umg) * beta_Luft * (Laenge_n)^3)/(k_visk)^2);
 


Jetzt fehlen die Werte beat_Luft usw.

Ich habe grade viel ausprobiert aber bekomme es nicht hin Sad
Er muss die werte aus out ja irgendwie in den workspace bekommen.

Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
soad
Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2011, 20:50     Titel:
  Antworten mit Zitat      
Die Werte befinden sich jetzt in der Struktur. Die kannst du mit "." ansprechen, also
Code:
Grashof_Zahl = ((9.81 * ( T_j_max - T_umg) * out.beta_Luft * (Laenge_n)^3)/(out.k_visk)^2);
Private Nachricht senden Benutzer-Profile anzeigen
 
lennart
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2011, 23:12     Titel:
  Antworten mit Zitat      
Alles klar.

Super vielen Dank Smile
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: 15.11.2011, 09:51     Titel:
  Antworten mit Zitat      
du must das da auch net out nennen kannst das auch anders nennen wenns für dich übersichtlicher is. out heist die variable ja nur in der funktion. wie du die außerhalb benennst is ja deine sache.
Code:
Parameter = Stoffwerte( T_m );
 

oder so
Private Nachricht senden Benutzer-Profile anzeigen
 
papiertigre
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 23.11.11
Wohnort: ---
Version: R2011b
     Beitrag Verfasst am: 23.11.2011, 15:57     Titel:
  Antworten mit Zitat      
lennart hat Folgendes geschrieben:
Ah ja das macht Sinn Smile Danke

Ich habe es geändert, nur leider kommt jetzt folgende Fehlermeldung
die ich nicht Lösen kann Sad


Error in Stoffwerte (line 11)
T_s=T_m;

Output argument "k_visk" (and maybe others) not assigned during call to
"E:\Users\Speed-PC\Documents\MATLAB\Modellierung_Matlab-Code\Stoffwerte.m>Stoffwerte".

Error in testiteration (line 61)
[ k_visk, lambda_Luft , c_p , Pr , beta_Luft ] = Stoffwerte( T_m );


Wäre über Hilfe sehr erfreut Smile

Vieleicht habt ihr ja auch ne einfache Alternative wie ich Matlab die Stoffwerte auswählen lassen kann. Danke


ich verfolge den Beitrag, weil ich mich selbst grade in Matlab einarbeite.
Die Lösung zu dem Problem steht da, aber was war die Ursache. Ich möchte die Fehlermeldung gerne nachvollziehen können.
Hat jemand einen kurzen Hinweis?
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: 23.11.2011, 17:18     Titel:
  Antworten mit Zitat      
keine ahnung da er seinen geänderten code ja nicht gepostet hat Smile aber ich geh mal davon aus das die funktion nicht gelaufen ist wie sie sollte und damit keine rückgabe parameter generiert hat ^^
Private Nachricht senden Benutzer-Profile anzeigen
 
papiertigre
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 23.11.11
Wohnort: ---
Version: R2011b
     Beitrag Verfasst am: 24.11.2011, 09:51     Titel:
  Antworten mit Zitat      
Naja aber du hast ihm doch mit deiner Code Version eine "Musterlösung" gegeben.
Hast du dann nicht auch erkannt was der Fehler war. Ich gehe davon aus, dass er deine Version genommen hat.
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.