Verfasst am: 31.03.2016, 10:38
Titel: Plot ist leer
Hallo zusammen,
ich verwende folgenden Code doch der Plot ist leer. Die Dimensionen an den Achsen stimmen und die Ergebnisse werden auch berechnet.
Wäre super wenn mir jemand sagen könnte, wo der Fehler liegt.
Code:
for(alphai=0:1:3600) if alphai>360
alphai=alphai
kw_ungerundet=alphai/360
kw=alphai-(floor(kw_ungerundet)*360) else
kw=alphai
end plot(alphai,kw) hold on
end format long
kw wird ständig überschrieben, ist also am Ende nur ein einziger Wert. Der Plot ist vermutlich nicht ganz leer, sondern ein Punkt ist markiert (schwer zu sehen).
So ginge es:
Code:
alphai=0:1:3600;
kw = zeros(size(alphai));
for k = 1:numel(alphai) if alphai(k)>360
kw_ungerundet=alphai(k)/360;
kw(k)=alphai(k)-(floor(kw_ungerundet)*360);
else
kw(k)=alphai(k);
end end plot(alphai,kw)
Bitte lies die Dokumentation von
diff
durch, wenn Du ein Problem damit hast. Es berechnet duie Differenz zwischen aufeinanderfolgenden Werten eines Vektors. Wenn Du aber mit "V_Z1(k)" nur ein Element angibst, wozwischen könnte dann die Differenz berechnet werten?
Eine Lösung wäre die Schleife einfach erst bei 2 beginnen zu lassen. Die andere wäre wie schon vorgeschlagen
diff
oder besser
gradientvor der Schleife zu verwenden:
ich erhalte jetzt jedoch folgenden Fehler:
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in Arbeitspiele (line 51)
dW_Z1(k)=dV_Z1*p_Z1(k); %Volumenänderungsarbeit Z1
Ich habe noch ein weiteres Problem.
Ab dem Loop Bereich elseif wird ein Ventil geöffnet und es strömt ein Gas über. Dazu berechne ich eine Temperatur und Druckänderung. dT und dp
Als Start Temperatur / Druck soll der letzte Wert im if Bereich sein und dann wird nach jedem Schritt im Loop der aktuelle Druck / Temp. mit dem dp und dT addiert und es ergibt sich ein neuer Wert für Druck / Temperatur.
Ich hatte versucht p_Z1(k)=p_Z1(k-1)+dp_Z1, allerdings erfolgt keine Berechnung. Als Ergebnis zeigt es NaN an, Fehlermeldung bringt es aber keine.
Ich habe im Anhang mal ein Excel zum nachvollziehen meines Problems.
In an assignment A(I) = B, the number of elements in B and I must be the same.
dW_Z1(k)=dV_Z1*p_Z1(k); %Volumenänderungsarbeit Z1
dV_Z1 ist nun ein Vektor. Wenn Du alle seine Elemente mit p_Z1(k) multiplizierst, bekommst Du wieder einen Vektor. Danach versuchst Du ihn aber dem Skalar dQ_Z1(k) zu zu weisen. Das muss natürlich scheitern.
Wenn Dein Code einen Fehler hat, lohnt es sich einen breakpoint in die entsrpechende Zeile zu setzen und das Programm nochmal zu starten. Wenn Matlab dann stoppt, kannst Du die Dimensionen der Variablen untersuchen und so das Problem identifizieren.
Debuggen ist effizienter als jedes Problem im Forum zu posten.
Damit kannst Du auch heraus bekommen, warum NaNs als Werte auftauchen, obwohl Du das nicht erwartest.
Gruß, Jan
Einstellungen und Berechtigungen
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
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.