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

nur gepunktete linie im plot

 

Calle
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2012, 13:20     Titel: nur gepunktete linie im plot
  Antworten mit Zitat      
WEnn ich das folgende Skript durchlaufen lasse, bekomme ich keine gescheiten plotts hin.
Code:
clear all
cp_l = 1493;                        % specific heat constant liquid [13 bar, 40°C] [J/(Kg*K]
cp_g = 1096;                        % specific heat constant liquid [13 bar, 80°C] [J/(Kg*K]
dH = 177500;                        % enthalpy of condensation [J/Kg]
P1 = 15;
T1 = 70;
T2 = 40;                    % should temperature [°C]
% m = 1.9;                   % massflow [kg/s]
m = 0.05:0.001:0.2;
Q_cmax = 30000;             % max power of condenser [W]
Ts_c =  temperature(P1);    % boiling temperature at pressure P1 [°C]
x1 = m*cp_g*(T1-Ts_c);      % used power from input to start boiling [W]
if Q_cmax>x1
    x2 = m*cp_g*(T1-Ts_c)+m*dH; % uses power from input to end boiling [W]
    if Q_cmax>x2
        Q_c = m*cp_g*(T1-Ts_c)+m*dH+m*cp_l*(Ts_c-T2);   % used power from input to should temperature [W]
        if Q_c<=Q_cmax
            strQ_c = ['Q_c: ', num2str(Q_c),' [W]'];
            disp(strQ_c)
            T2 = (Ts_c+273)-Q_c./(m*cp_l)+((cp_g*(T1-Ts_c)+dH)/cp_l);  % output temperature [K]
            T2 = T2-273;    % output temperature [°C]
        else
            strQ_cmax = ['Q_cmax: ', num2str(Q_cmax),' [W]'];
            disp(strQ_cmax)
            T2 = (Ts_c+273)-Q_cmax./(m*cp_l)+((cp_g*(T1-Ts_c)+dH)/cp_l);  % output temperature [K]
            T2 = T2-273;    % output temoperatrue [°C]
        end
    else
        Q_c = Q_cmax;
        T2 = Ts_c;          % output temperature [°C]
        disp('VAPOR! liquid and vapor');
        strQ_cmax = ['Q_cmax: ', num2str(Q_cmax),' [W]'];
        disp(strQ_cmax)
    end
else
    Q_c = Q_cmax;
    T2 = (T1+273)-Q_c./(m*cp_g); % output temperature [K]
    T2 = T2-273;    % output temperature [°C]
    disp('VAPOR! just vapor');
    strQ_cmax = ['Q_cmax: ', num2str(Q_cmax),' [W]'];
    disp(strQ_cmax)
end

P2 = P1;

figure(1)
y = min(Q_c, Q_cmax);
plot(m,y/1000)
axis([0.05 0.2 10 35])
title('Power/ massflow')
xlabel('massflow [kg/s]')
ylabel('Power condenser [kW]')

figure(2)
y = max(T2,40);
plot(m,y)
axis([0.05 0.2 35 60])
title('temperature/ massflow')
xlabel('massflow [kg/s]')
ylabel('temperature [°C]')



% str1 = ['P1: ', num2str(P1), ' [bar]         T1: ',num2str(T1),'[°C]'];
% disp(str1);
% str2 = ['P2: ', num2str(P2), ' [bar]         T2: ',num2str(T2),'[°C]'];
% % disp(str2);
% disp(' ')
 


Es kommt nur eine gepunktete linie. habe ich irgendwo einen Fehler gemacht?
wenn ich die 9. Zeile umändere in
Code:
m = 0.05:0.001:0.15;

und die Achsen anpasse, bekomme ich für den ersten Plot eine gescheite graphik. Allerdings für die Zweite nicht. Wenn ihc die Zeile umändere in
Code:
m = 0.05:0.001:2;

ist es genau umgekehrt. Dann bekomme ihc für den zweiten einen gescheiten plot, allerdings ist beim ersten nur eine gepunktete linie.
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.03.2012, 13:47     Titel:
  Antworten mit Zitat      
Code:


y ist bei dir nur ein einzelner intwert darum die gepunktete linie. du musst noch ein vektor draus machen dann verbindet er die punkte auch.
Private Nachricht senden Benutzer-Profile anzeigen
 
Calle
Themenstarter

Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2012, 16:02     Titel:
  Antworten mit Zitat      
Jetzt macht er zwar die Linie, aber es dürfte eigentlihc keine Linie sein (zumindestens nicht von 0 an).
am anfang müsste es eine Steigung geben. und die wird nicht abgebildet
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.03.2012, 16:17     Titel:
  Antworten mit Zitat      
da dein code bei mir ja so nicht lauffähig ist kann ich das problem ja nicht nachbilden. und mit "dürfte eigentlich" kann ich das problem nicht lösen ^^
setz mal den debugger vor dem plot und guck dir die werte an. warum da eine steigung seihen soll kann ich auhc nicht nachvollzihenen. y siht bei mir wie ein konstanter wert aus.
Private Nachricht senden Benutzer-Profile anzeigen
 
Calle
Themenstarter

Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2012, 03:17     Titel:
  Antworten mit Zitat      
Habe eine Ursache gefunden. Das mit dem
Code:
y = max(T2,40);

war nciht wirklich eine Lösung. Ich glaube, dass bei einer if-Abfrage nur der Letzte Wert des Vektors m abgefragt wurde, Und dann alle Parameter mit der Formel gerechnet wurden.
(Danke für den Tip mit dem Debugger)
Also habe ich eine for-Schleife gemacht, in der jetzt jeder Wert kontrolliert wird.
Allerdings habe ich jetzt ein anderes Problem.
(ein ausdruck aus dem Skript):
Code:
           if x3<=Q_cmax
                Q_c(i) = m*cp_g*(T1-Ts_c)+m*dH+m*cp_l*(Ts_c-T2(1));
                T2(i) = (Ts_c+273)-Q_c(i)/(m*cp_l)+((cp_g*(T1-Ts_c)+dH)/cp_l);  % output temperature [K]
                T2(i) = T2(i)-273;    % output temperature [°C]


unter T2(i) ist eine gewellte Orangene Linie, mit dem Hinweis
Code:
The variable 'T2' appears to change size on every loop iteration (within a script). Consider preallocating for speed.

Wie kann ich das entfernen? Eine möglich wäre z.B.
Code:
x = (Ts_c+273)-Q_c(i)/(m*cp_l)+((cp_g*(T1-Ts_c)+dH)/cp_l);
T2(i) = x

aber das finde ich nicht so gut, da es alles noch unübersichtlicher macht.
Und Warum ist der Hinweis nicht unter ' Q_c(i)'?
Aber ansonsten funktioniert jetzt alles so wie es soll.
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: 26.03.2012, 07:20     Titel:
  Antworten mit Zitat      
Zitat:
Wie kann ich das entfernen?
steht schon in der fehler beschreibung wie du das beheben kannst. du sollst den vektor vorher schonmal anlegen. also vor deiner schleife.
wenn du weist bist wohin i geht kannst du einfach
Code:
machen. dann sollte die wellenlinie weg sein.er meckert halt rum weill er bei jedem durchlauf deiner schleife sonst einen neuen vektor erstellen muss der ein wenig größer ist als der alte und den inhalt des alten vektors in den neuen kopieren muss. das kostet ne menge zeit.
Private Nachricht senden Benutzer-Profile anzeigen
 
Calle
Themenstarter

Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2012, 08:33     Titel:
  Antworten mit Zitat      
aha, werde es mal ausprobieren.
leider weiß ich mein imax aber nicht (oder ist immer verschieden) auch gebe ich einen Wert für T2 vor. aber das probiere ich erst einmal selber aus, wie ich das hinbekommen kann.
aber schon einmal besten dank
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.