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

mit doppelter Schleife und horzcat Daten auslesen/berechnen

 

318is
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 09.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2017, 16:12     Titel: mit doppelter Schleife und horzcat Daten auslesen/berechnen
  Antworten mit Zitat      
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


maxTemp=zeros(1,length(Test))+maxTemp
Test(1,:)=maxTemp
Test(3,:)=maxTemp-Test2

 


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?

Es wäre toll wenn mir jemand helfen könnte Wink

PS: ich habe einen WS zum testen angehängt

WS_zum_Testen.mat
 Beschreibung:
Workspace zum Testen

Download
 Dateiname:  WS_zum_Testen.mat
 Dateigröße:  19.88 KB
 Heruntergeladen:  297 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.08.2017, 14:52     Titel: Re: mit doppelter Schleife und horzcat Daten auslesen/berech
  Antworten mit Zitat      
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?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
318is
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 09.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2017, 09:28     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich habe es gestern selber hinbekommen.

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
Code:

L=length(Test);
Test(1,L+1)=maxTemp;
 


Trotzdem Danke für die Rückmeldung!!Smile
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.