Verfasst am: 22.10.2015, 17:36
Titel: Temperatur einer Zeit und Datum zuschreiben
Servus Leute,
ich hab ein Problem.. Ich schreibe meine BA über 'Verbraucherseitige Kälteerzeugung mit geothermischer Wärme' und benötige dazu Matlap und Simulink, um das ganze Thema zu simulieren. Gearbeitet habe ich schonmal damit, aber das ist jetzt auch schon ein Jahr her und nicht mehr so frisch.
Ich muss eine Exceltabelle in matlab einprogrammieren und bekomme es ums ver.... nicht hin.
Problem ist, dass ich die Temperaur einer gewissen Zeit und Datum zuschreiben möchte.
Code:
Januar2015='C:\User\Geronymo\Dropbox\Bachelorarbeit\MATLAB\Januar2015.xlsx;
[Temperatur_Januar]=xlsread(Januar2015,'EXP201501','C4:C8931'); % Temperatur auslesen und Variable bilden [Zeit_Januar]=xlsread(Januar2015,'EXP201501','B4:B8931');% Will er nicht nehmen und gibt [] aus
Verfasst am: 22.10.2015, 22:44
Titel: Re: Temperatur einer Zeit und Datum zuschreiben
Hallo Geronymo,
Bitte lies die Dokumentation zu
xlsread
. Dort findest Du die Erklärung, dass der erste Output die numerischen Werte enthält. Soweit ich sehe stehen dort in Excel Werte wie "00:00". Sind das Strings? Der zweite Output von
xlsread
sollte das klären.
also hab ein paar Probleme lösen können.
Aber ich habe immernoch ein Problem.
ich möchte das meine Simulation zeitabhängig läuft.
Dh. T_terra (Außentemperatur)
-4.1
-4.9
-..
-..
-..
soll dem Datum zugeordnet werden also
2014-01-01 00:00 --> -4.1
2014-01-01 01:00 --> -4.9
....
....
Ziel ist es in Simulink nicht einzelne Werte durch das System zu jagen, sondern eine Temperaturfolge und ich komm einfach nicht drauf, wie ich das machen kann.
% Temperaturdaten aus Excel
filename = 'Temp_2014.xlsx';
T_terra=xlsread(filename,2,'D2:D8761');
% Datumsdaten aus Excel [~,~,datum]=xlsread(filename,2,'J2:J8761'); % Implementierung des Datums
Datum = datenum(datum);
% Übergabe an Simulink
%open('Simulation');
%sim('Simulation');
% Erzeugung eines Graphen
plot(T_terra,'-r');
title('Jahrestemperaturkurve 2014','color','b');
xlabel('Stunden in h','color','k');
ylabel('Temperatur in °C','color','k');
legend('Temperaturverlauf','color','k');
Ich würde Dir gerne einen Tipp geben, aber Du verrätst leider nicht, welche Fehlermeldungen Du bekommst. "Wollte nicht" erlaubt es nicht einen Verbesserungsvorschlag zu machen.
Bitte poste den relevanten Code-Abschnitt. Am besten ist, wenn er so gewählt wird, dass wir das Problem per COpy&PAste reproduzieren können.
Und dann füge noch die komplette (!) Fehlermeldung hinzu, nicht nur den kleinen Ausschnitt, der Dir relevant vorkommt.
Ich versuche eine Zeit mit einem Wert zu verbinden. Also in Simulink eine bestimmte Zeit-Werte-Folge abzuarbeiten. Dh. am 01.01.2014 um 01:00 Uhr habe ich eine Außentemperatur von -4.1 °C.
Simulink soll danach nun -> 01.01.2014 um 02:00 mit einem Wert von -4.9°C fortführen.
Problem ist, das Simuink den Wert nimmt(bei reiner Wertübergabe also T_terra[Nur Außentemperaturwert]), aber ihn nicht zeitlich richtig anordnet. Es geht alle Werte durch aber nicht hintereinander.
Diese timeserie hat keinen Namen, weil das mit dem Namen nicht hingehauen hat. Ist glaub ich auch nicht so wichtig zur weiteren Benutzung, oder?
Ich kann diese Serie jedoch nicht als Constant-Block benutzen und somit werden die
Werte nicht weitergegeben. Wie könnte ich das lösen?
Eine weitere Frage ist: Ich würde gerne einen Plot Temp. Über Datum sehen.
Es geht jetzt schon, aber es werden so wenig x Punkte(DATUM) angezeigt und ich hätte gerne mehr.
(Platzmangel in der Zeile??)
Code:
figure(2);
plot(ts,'-r');
title('Jahrestemperaturkurve 2014','Fontsize',10,'color','b');
xlabel('Datum','Fontsize',10,'color','k');
ax = gca;
ax.XTickLabelRotation = -40;
%set(gca,'xtick',[01-01-201402-01-2014]); Funktioniert noch nicht
ylabel('Temperatur in °C','Fontsize',10,'color','k');
legend('Temperaturverlauf','Fontsize',1,'color','k');
% Temperaturdaten aus Excel
filename = 'Temp_2014.xlsx';
T_terra=xlsread(filename,2,'D2:D8761');
% Datumsdaten aus Excel [~,~,datum]=xlsread(filename,2,'J2:J8761'); % Implementierung des Datums
Datum = datenum(datum);
[~,~,zeit]=xlsread(filename,2,'K2:K8761');
Das sind die Meldungen nach Simulation im CW:
------------------------------------------------------------------------------------------------
Warning: Output port 1 of 'Simulation/Begrenzer 2' is not connected.
> In T_aussen (line 19)
Warning: Output port 1 of 'Simulation/Begrenzer 3' is not connected.
> In T_aussen (line 19)
Warning: Output port 1 of 'Simulation/Begrenzer 4' is not connected.
> In T_aussen (line 19)
Warning: Truncating signals shown by 'Simulation/Display'. Displays can only show at most 200 elements of a
vector or [20x10] elements of a matrix signal
> In T_aussen (line 19)
Warning: Truncating signals shown by 'Simulation/Display1'. Displays can only show at most 200 elements of a
vector or [20x10] elements of a matrix signal
> In T_aussen (line 19)
Warning: Truncating signals shown by 'Simulation/ Heizlast/Display'. Displays can only show at most 200
elements of a vector or [20x10] elements of a matrix signal
> In T_aussen (line 19)
Warning: Ignoring extra legend entries.
> In legend>set_children_and_strings (line 629)
In legend>make_legend (line 321)
In legend (line 247)
In T_aussen (line 27)
Warning: Ignoring extra legend entries.
> In legend>set_children_and_strings (line 629)
In legend>make_legend (line 321)
In legend (line 247)
In T_aussen (line 37)
------------------------------------------------------------------------------------------------
Simulink soll danach nun -> 01.01.2014 um 02:00 mit einem Wert von -4.9°C fortführen.
Problem ist, das Simuink den Wert nimmt(bei reiner Wertübergabe also T_terra[Nur Außentemperaturwert]), aber ihn nicht zeitlich richtig anordnet. Es geht alle Werte durch aber nicht hintereinander.
Ich kann Dir nicht folgen.
Zitat:
Diese timeserie hat keinen Namen, weil das mit dem Namen nicht hingehauen hat.
Bitte poste, was Du versucht hast und welche Fehlermeldung Du bekommen hast. Mit "hat nicht hingehauen" kann man im Forum nichts anfangen.
Zitat:
Ist glaub ich auch nicht so wichtig zur weiteren Benutzung, oder?
Das weiß ich nicht. Ich weiß ja nicht, was genau geschehen ist.
Zitat:
Ich kann diese Serie jedoch nicht als Constant-Block benutzen und somit werden die Werte nicht weitergegeben. Wie könnte ich das lösen?
Was bedeutet "Du kannst es nicht benutzen"? Was geschieht, wenn Du es versuchst? Wie können wir Dir denn weiter helfen?
Zitat:
Es geht jetzt schon, aber es werden so wenig x Punkte(DATUM) angezeigt und ich hätte gerne mehr.
(Platzmangel in der Zeile??)
In welcher Zeile? Was bedeutet "Platzmangel"? Was heißt "so wenige" genau?
Kannst Du Code posten, mit dem man das Verhalten reproduzieren kann?
Der bisher gezeigte Code läuft nicht, da die Variable "ts" nicht verfügbar ist.
Zitat:
%set(gca,'xtick',[01-01-2014 02-01-2014]); Funktioniert noch nicht
Wie könnte das auch funktionieren? Was ist denn "01"? Eine Oktal-Zahl, da sie mit 0 beginnt? XTick erwartet zwei Zahlen als Argument. 01-01-2014 ist keine Zahl. Wie wäre:
Wenn Du das leidige "clear all" weglässt, wird es Dir leichter fallen den Debugger zu verwenden.
Die Anzahl der Warnungen ist beeindruckend. Wie wäre es, diese zunächst mal eine nach der anderen zu lösen?
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.