Verfasst am: 08.08.2017, 16:12
Titel: mit doppelter Schleife und horzcat Daten auslesen/berechnen
Hallo Miteinander!
ich möchte Messdaten auswerten und hierfür berechnete Werte aus einer Messung in eine Matrix schreiben um mit ihr später weiter arbeiten zu können.
Es wurde eine Aufheizung vermessen. Hierzu liegen die folgenden Vektoren vor:
E_Heiz_HzWT_Aufnahme - Energie an Stelle 1
E_Heiz_KW_eff - Energie an Stelle 2
T_Innenraum - Innenraumtemperatur
T_KW_HT_V_HZWT -Kühlmitteltemperatur
time - Zeit
Ich möchte nun folgendes Auswerten: Es soll die benötigte Differenz berechnet werden die zwischen zwei verschiedenen Temperaturen nötig ist. Hierzu habe ich folgendes Skript geschrieben:
Code:
%% Test
maxTemp=floor(max(T_Innenraum))% maximale Temperatur der Messung
Zeitpunkt_maxTemp=time(T_Innenraum>maxTemp);% Vektor ab dem Diese Innenraumtemperatur herrscht
Zeit_bis_maxTemp=Zeitpunkt_maxTemp(1)/60;% Dies ist der erste Zeitwert an dem die maxTemp im Innenraum ueberschritten werden
Index_maxTemp=time-Zeitpunkt_maxTemp(1);
Index_maxTemp=find(Index_maxTemp==0); % Index der Zeile an dem Temp im Innenraum ueberschritten werden
E_HZWT_maxTemp=E_Heiz_HzWT_Aufnahme(Index_maxTemp); % Energie am HzWT zu diesem Zeitpunkt
E_PTC_maxTemp=E_Heiz_KW_eff(Index_maxTemp); % Energie am PTC zu diesem Zeitpunkt
T_KW_maxTemp=T_KW_HT_V_HZWT(Index_maxTemp); % Kühlmitteltemperatur zu diesem Zeitpunkt
minTemp=ceil(min(T_Innenraum))% minimale Temperatur der Messung
Temperaturvektor=maxTemp % Wert von maxTemp halten
if Temperaturvektor>minTemp;
i=0;
while Temperaturvektor>minTemp;
Temperaturvektor=Temperaturvektor-1;
Test(1,i+1)=Temperaturvektor; % Erste Zeile= obere Temperatur; hier nur Platzhalter
Test2(i+1)=Temperaturvektor; % für zweite Zeile unterer Wert
Test(2,i+1)=Temperaturvektor; % schreibt nur Zeilen damit später mit maxTemp
Test(3,i+1)=Temperaturvektor; % und maxTemp - Test2 gefüllt werden kann
Zeitpunkt_Temp=time(T_Innenraum>Temperaturvektor); %Zeiten bei denen der untere Tempwert überschritten wurde
Zeit_in_minuten=Zeitpunkt_Temp(1)/60;% Dies ist der erste Zeitwert an dem die Temp im Innenraum ueberschritten werden
Index_Temp=time-Zeitpunkt_Temp(1);
Index_Temp=find(Index_Temp==0); %Index der Zeile an dem untere Temp im Innenraum ueberschritten werden
E_HZWT=E_Heiz_HzWT_Aufnahme(Index_Temp)-E_HZWT_maxTemp; % Energie am HzWT für unteren Zeitwert
E_PTC=E_Heiz_KW_eff(Index_Temp)-E_PTC_maxTemp; % Energie am PTC für unteren Zeitwert
T_KW=T_KW_HT_V_HZWT(Index_Temp); % Kühlmitteltemperatur zu diesem Zeitpunkt
Zeitdauer=Zeit_bis_maxTemp-Zeit_in_minuten %Zeit von unterer Temperatur bis aktuelle maxTemp
Test(4,i+1)=T_KW % Werte in Matrix schreiben
Test(5,i+1)=Zeitdauer % Werte in Matrix schreiben
Test(6,i+1)=E_HZWT % Werte in Matrix schreiben
Test(7,i+1)=E_PTC % Werte in Matrix schreiben
i=i+1;
end end
Das ganze funktioniert soweit gut und berechnet in diesem Fall alle Differenzen von 1-32Grad und der maximalen Temperatur von 33 Grad aus.
Im nächsten Schritt soll das Ganze für 1-31 und 32Grad ermittelt werden und an die Matrix Test angefügt werden. Also in Spalte 33 die Differenz zwischen 32 und 31 Grad, in Spalte 34 die Differenz zwischen 32 und 30 Grad, ..., usw. Danach mit 31 und 30, 31 und 29....
Ich wollte das ganze mit einer Doppelten while-Schleife lösen und die Werte per horzcat anfügen. Jedoch bin ich nicht sonderlich fit im Programmieren und kämpfe hiermit etwas. Gibt es eine Möglichkeit horzcat mit in die erste Schleife aufzunehmen oder muss zuerst dieses Skript durchgeführt werden und anschließend eine weitere Schleife mit der man per horzcat die neuen Werte anfügt?
Verfasst am: 09.08.2017, 14:52
Titel: Re: mit doppelter Schleife und horzcat Daten auslesen/berech
Hallo 318is,
Der Code ist kaum lesbar. Das Einfügen von Leerzeichen würde da sehr helfen.
Zitat:
E_Heiz_HzWT_Aufnahme - Energie an Stelle 1
E_Heiz_KW_eff - Energie an Stelle 2
T_Innenraum - Innenraumtemperatur
T_KW_HT_V_HZWT -Kühlmitteltemperatur
time - Zeit
Da dies für Matlab alles nur Zahlen sind, muss man auch für die Lösung Deines Problems nicht wissen, was die Zahlen bedeuten. Deshalb rauben solche Erklärungen nur Deine Zeit, und schrecken Leser im Forum ab.
Zitat:
Im nächsten Schritt soll das Ganze für 1-31 und 32Grad ermittelt werden und an die Matrix Test angefügt werden. Also in Spalte 33 die Differenz zwischen 32 und 31 Grad, in Spalte 34 die Differenz zwischen 32 und 30 Grad, ..., usw. Danach mit 31 und 30, 31 und 29....
Ich kann Dir nicht folgen. Ich vermute, dies lässt sich auch direkt lösen, vielleicht über
histcounts
. Aber da ich bei der Erklärung und dem bisherigen Code nicht ganz durchsteige, kann ich nichts konkretes vorschlagen.
Kannst Du das Problem nochmal genauer erklären - aber mit weniger Details? Welche Teile welchen Arrays möchtest Du wie ausgegeben haben?
Horzcat war wohl in meinem Fall sowieso Unfug. Ich habe da wohl den Wald vor lauter Bäumen nicht gesehen..
Es geht ja schlicht mit der Bestimmung der aktuellen Länge und dann ein Eintrag weiter
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.