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

"Extremen" im Plot automatisch beschriften lassen

 

Matte
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.11.13
Wohnort: Beckenfeld
Version: ---
     Beitrag Verfasst am: 12.11.2013, 10:47     Titel: "Extremen" im Plot automatisch beschriften lassen
  Antworten mit Zitat      
Hallo Smile

Ich glaube mein Problem ist recht simpel zu lösen, ich suche jetzt allerdings schon seit stunden nach einer Lösung und komme nicht weiter...

Ich habe ein Plot mit mehreren Kurven erstellt. Diese Kurven stellen Temperaturverläufe dar.
Ich möchte im Plot gerne sehen, welche Temperatur die beiden "extremen" haben.

Da es bei jeder Auswertung andere Temperaturfühler sein können, muss Matlab automatisch erkennen, welcher der wärmste und welcher der kälteste ist...


Code:
timevec = (1:977)';
x = timevec;

%Zuweisung der Ebenen:
%Bodenebene:
DL1B2 = xlsread ('DL1.xlsx',1,'H24:H1000');
DL1B3 = xlsread ('DL1.xlsx',1,'I24:I1000');
DL3A2 = xlsread ('DL3.xlsx',1,'D24:D1000');
DL3A3 = xlsread ('DL3.xlsx',1,'E24:E1000');
DL2A2 = xlsread ('DL2.xlsx',1,'D24:D1000');
DL2A3 = xlsread ('DL2.xlsx',1,'E24:E1000');
DL2B2 = xlsread ('DL2.xlsx',1,'H24:H1000');
DL2B3 = xlsread ('DL2.xlsx',1,'I24:I1000');

y1 = DL1B2;
y2 = DL1B3;
y3 = DL3A2;
y4 = DL3A3;
y5 = DL2A2;
y6 = DL2A3;
y7 = DL2B2;
y8 = DL2B3;

subplot(3,1,1);
hold
plot (x,y1, 'c')
plot (x,y2, 'm')
plot (x,y3, 'y')
plot (x,y4, 'r')
plot (x,y5, 'g')
plot (x,y6, 'b')
plot (x,y7, 'k')
plot (x,y8, 'r-')
legend ('DL1B2','DL1B3','DL3A2','DL3A3','DL2A2','DL2A3','DL2B2','DL2B3')
title ('Bodenebene')
xlabel ('Time [min]')
ylabel ('Temperatur [°C]')
grid on


Ich bin absoluter Neuling in Matlab und hoffe Ihr könnt mir helfen Smile

Vielen Dank!!!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.11.2013, 11:06     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich möchte im Plot gerne sehen, welche Temperatur die beiden "extremen" haben.

Also Minimum und Maximum als Zeitverlauf?

Empfehlung: fasse die 8 Vektoren zu einer Matrix zusammen.
Code:
y = zeros(977,8);
y(:,1) = DL1B2;
y(:,2) = DL1B3;
...


Dann wären die min- und max-Kurven:
Code:
ymin = min(y, [], 2);
ymax = max(y, [], 2);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 12.11.2013, 11:06     Titel:
  Antworten mit Zitat      
Hallo Matte

Vorab: Es ist nicht besonders klug den Index im Variablennamen zu verstecken (deine y1...y9). Benutze hierzu Cells oder bei gleicher länger Matrizen.

Zitat:
Ich möchte im Plot gerne sehen, welche Temperatur die beiden "extremen" haben.


Das verstehe ich nicht genau. Du suchst min/max von deinen Kurven? Also willst am ende nur einen max und min wert haben?

Code:
ymin=min[y1,y2,y3....];


Wenn alle gleich lang sind.

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
Matte
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.11.13
Wohnort: Beckenfeld
Version: ---
     Beitrag Verfasst am: 13.11.2013, 08:49     Titel:
  Antworten mit Zitat      
Hallo, vielen Dank für die Antworten!!!

Ich möchte aus den 8 geplotteteten Graphen, wirklich nur die maximale Temperatur die in einem der Graphen auftritt und die minimale Temperatur. Über die Zeit benötige ich es nicht.

Ich habe meine Zuweisung zunächst, wie empfholen, umgeschrieben.
Dann habe ich mir eine min-/maxfunktion geschrieben. Diese funktioniert sogar.

Code:

timevec = (1:977)';
x = timevec;

%Bodenebene:
DL1B2 = xlsread ('DL1.xlsx',1,'1');
DL1B3 = xlsread ('DL1.xlsx',1,'1');
...
y = zeros (1,8);
y(:,1) = DL1B2;
y(:,2) = DL1B3;

ymin = min (y);
ymax = max (y);

% so gibt mir Matlab die min´s und max´s von jedem einzelnen Graphen aus, da ich aber ein absoluten min-/maxwert benötige mache ich noch folgendes:

Temperaturminimum = min (ymin);
Temperaturmaximum = max (xmax);

figure(1)
subplot (3,1,1);
hold
plot (x,y,'.')
hold on
plot (Temperaturminimum, '*r')
plot (Temperaturmaximum, '*r')
 


Ich möchte jetzt in meinem plot sehen, welcher Temperaturfühler(z.B. DL1B2) den min-/max-Wert hat. Eine Beschriftung in dem Plot also.
Durch
Code:

plot (Temperaturminimum, 'r*')
 


bekomme ich nur ein * an die gewünschte Position.[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 13.11.2013, 09:11     Titel:
  Antworten mit Zitat      
Hi nochmal,

Zitat:
Ich möchte jetzt in meinem plot sehen, welcher Temperaturfühler(z.B. DL1B2) den min-/max-Wert hat.


Definiere "sehen" Wink

der zweite Output von min/max gibt dir den Index, das sollte helfen.

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.11.2013, 09:19     Titel:
  Antworten mit Zitat      
Hallo,

der Index, den man zurück erhält, ist dann logischerweise ein linearer Index. Mit ind2sub kann man das dann wieder in Zeilen- und Spaltenindex zurückrechnen.
Mit text oder gtext kann man zudem Text in einem Graphen darstellen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Matte
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.11.13
Wohnort: Beckenfeld
Version: ---
     Beitrag Verfasst am: 13.11.2013, 10:58     Titel:
  Antworten mit Zitat      
Mit sehen meine ich, dass Matlab von sich aus ein Textfeld in dem Plot erstellt, das auf den Punkt der Temperaturmaximalen zeigt. Zum Beispiel mit einem Pfeil oder Ähnlichem.

Mit gtext bekomme ich selber die Möglichkeit den Ort des Punktes zu bestimmen, ich möchte aber, dass das Programm sämtliche Schritte ausführt, sodass der Betrachter keine Arbeit und keine Fragen mehr hat.

Was bringt mir das denn, wenn ich meine Daten als Index ausgegeben bekomme? Habe keine Erfahrung Embarassed
Ich stelle mir das so vor:

Code:


text(Temperaturminimum, 'T_min')

% Bei Temperaturminimum "T_min" schreiben
% Das geht leider nicht da es

text(X,Y,'string')

% heißen muss...
 


Ich hoffe das ist einigermaßen verständlich ausgedrückt Rolling Eyes
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.11.2013, 11:04     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Was bringt mir das denn, wenn ich meine Daten als Index ausgegeben bekomme?

Dann hast du den passenden x-Wert und könntest (sofern du das möchtest) auch noch den Namen der Zeitreihe mit aufnehmen.

Code:
[Temperaturminimum, idx] = min (y(:));
[xwert, datensatz] = ind2sub(size(y), idx);
text(xwert, Temperaturminimum, ['Minimum bei Datensatz ' num2str(datensatz)])


Für Pfeile o.ä.:
Code:

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Matte
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.11.13
Wohnort: Beckenfeld
Version: ---
     Beitrag Verfasst am: 20.11.2013, 13:40     Titel:
  Antworten mit Zitat      
Hallo, hatte einige Tage Urlaub und jetzt erst wieder mit Matlab gestartet.

Mein jetziger Code sieht so aus:


Code:
timevec = (1:120)';
x = timevec;

%Bodenebene:
DL1B2 = xlsread ('DL1.xlsx',1,'H500:H619'); % Für 120min
DL1B3 = xlsread ('DL1.xlsx',1,'I500:I619');
DL3A2 = xlsread ('DL3.xlsx',1,'D500:D619');
DL3A3 = xlsread ('DL3.xlsx',1,'E500:E619');
DL2A2 = xlsread ('DL2.xlsx',1,'D500:D619');
DL2A3 = xlsread ('DL2.xlsx',1,'E500:E619');
DL2B2 = xlsread ('DL2.xlsx',1,'H500:H619');
DL2B3 = xlsread ('DL2.xlsx',1,'I500:I619');

y = zeros(120,8); %120x8 Matrix
y(:,1) = DL1B2;
y(:,2) = DL1B3;
y(:,3) = DL3A2;
y(:,4) = DL3A3;
y(:,5) = DL2A2;
y(:,6) = DL2A3;
y(:,7) = DL2B2;
y(:,8) = DL2B3;

ymin = min (y);
ymax = max (y);

Temperaturminimum = min (ymin);
Temperaturmaximum = max (ymax);

figure(1)
subplot(3,1,3);
hold
plot (x,y)
legend ('DL1B2','DL1B3','DL3A2','DL3A3','DL2A2','DL2A3','DL2B2','DL2B3',2)
title ('Bodenebene')
xlabel ('Time [min]')
ylabel ('Temperatur [°C]')
hold on
plot(Temperaturminimum,'*r')
plot(Temperaturmaximum,'*r')
grid on
saveas (subplot(3,1,1), 'Bild.png','png');


Ich bekomme es hin, dass mir mit dem Befehl

Code:
plot(Temperaturminimum,'*r')


ein Punkt in dem Graphen angezeigt wird mit dem Temperaturminimum. Leider ist dieser Punkt beim Startzeitpunkt abgelegt und nicht auf dem tatsächlichen Punkt in der Kurve!? Das ist eigentlich nicht optimal.
Toll wäre auch, wenn an dem Punkt die Temperatur stehen würde...


Desweiteren möchte ich, dass jeder y-Wert eine fest zugewiesene Farbe im Plot bekommt. Wenn ich die y einzeln plotte, so wie in meiner ersten gezeigten Version, bekomme ich das natürlich hin.
Jetzt habe ich schon versucht

Code:
plot (x,y(:,1) 'c', y(:,2) 'r', % usw.)

%und

plot (x,y 'c', y 'r', % usw.)
 


Das klappt leider nicht.


Vielen Dank für die Hilfe! Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.11.2013, 18:26     Titel:
  Antworten mit Zitat      
Hallo,

hast du denn mal versucht, meine Anregungen mit dem text-Befehl umzusetzen?

Bitte möglichst klar erklären, was du versuchst und vor allem: was daran nicht wie gewünscht funktioniert.
Mir ist bei dem "Desweiteren"-Teil weder klar, was du genau willst (geht es wirklich um jeden einzelnen Wert oder nicht eher um die verschiedenen Spalten?) noch wo das Problem bei der Umsetzung ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Matte
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.11.13
Wohnort: Beckenfeld
Version: ---
     Beitrag Verfasst am: 22.11.2013, 10:52     Titel:
  Antworten mit Zitat      
Sorry für die missverständlichen Aussagen!!!


Ich Habe jetzt deinen Vorschlag eingearbeitet und etwas verändert.

Code:
DL1B2 = xlsread ('DL1.xlsx',1,'H500:H619'); %Für 120min
DL1B3 = xlsread ('DL1.xlsx',1,'I500:I619');
DL3A2 = xlsread ('DL3.xlsx',1,'D500:D619');
DL3A3 = xlsread ('DL3.xlsx',1,'E500:E619');
DL2A2 = xlsread ('DL2.xlsx',1,'D500:D619');
DL2A3 = xlsread ('DL2.xlsx',1,'E500:E619');
DL2B2 = xlsread ('DL2.xlsx',1,'H500:H619');
DL2B3 = xlsread ('DL2.xlsx',1,'I500:I619');
 
y = zeros(120,8); %120x8 Matrix
y(:,1) = DL1B2;
y(:,2) = DL1B3;
y(:,3) = DL3A2;
y(:,4) = DL3A3;
y(:,5) = DL2A2;
y(:,6) = DL2A3;
y(:,7) = DL2B2;
y(:,8) = DL2B3;
 
ymin = min (y);
ymax = max (y);
 
TemperaturminimumBoden = min (ymin)
TemperaturmaximumBoden = max (ymax)
 
figure(1)
subplot(3,1,3);
hold
plot (x,y)
legend ('DL1B2','DL1B3','DL3A2','DL3A3','DL2A2','DL2A3','DL2B2','DL2B3',5)
title ('Bodenebene')
xlabel ('Time [min]')
ylabel ('Temperatur [°C]')
hold on
grid on
 
[TemperaturminimumBoden, idx] = min(y(:));
[xwert, datensatz] = ind2sub(size(y), idx);
text(xwert, TemperaturminimumBoden, ['MIN ' num2str(TemperaturminimumBoden)])
 
[TemperaturmaximumBoden, idx] = max(y(:));
[xwert, datensatz] = ind2sub(size(y), idx);
text(xwert, TemperaturmaximumBoden, ['MAX ' num2str(TemperaturmaximumBoden)])
 
saveas (subplot(3,1,1), 'Bodenebene.eps','eps');
 
saveas (figure(1), 'Auswertung_gesamt.png','png');
 


Ich bekomme so jetzt die Temperaturen an den Punkten angezeigt. Sehr gut!!! Danke!

Wenn ich den code so eingebe

Code:


[Temperaturminimum, idx] = min (y(:));
[xwert, datensatz] = ind2sub(size(y), idx);
text(xwert, Temperaturminimum, ['Minimum bei Datensatz ' num2str(datensatz)])
 


gibt mir MATLAB die Datenreihe aus in dem die Temperatur auftritt. D.h. es steht an dem betroffenen Punkt "Datensatz8" oder "Datensatz3" usw. ... nicht die Temperatur oder der wirkliche Name der Reihe (DL1B3, ...).

Ich hätte gerne das dort die Temperatur und der Name der Datenreihe, also DL1B3 usw. steht... die Temperatur klappt ja schon.

Ausprobiert habe ich nichts, da ich wirklich keine Idee habe, wie ich die Beiden verknüpfen kann...

Ich hoffe ich drücke mich dieses Mal verständlicher aus :/
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 22.11.2013, 11:12     Titel:
  Antworten mit Zitat      
Hallo,
Dann musst du die Original-Namen der Datensätze irgendwie iirgendwo abspeichern und dann den passenden Namen auslesen. Zum Beispiel so:
Code:
Datensatznamen = {'DL1B2','DL1B3','DL3A2','DL3A3','DL2A2','DL2A3','DL2B2','DL2B3'};
[Temperaturminimum, idx] = min (y(:));
[xwert, datensatz] = ind2sub(size(y), idx);
text(xwert, Temperaturminimum, ['Minimum bei Datensatz ' Datensatznamen{datensatz}])


Viele Grüße.
Private Nachricht senden Benutzer-Profile anzeigen
 
Matte
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.11.13
Wohnort: Beckenfeld
Version: ---
     Beitrag Verfasst am: 25.11.2013, 13:34     Titel:
  Antworten mit Zitat      
Hallo, danke für die Antwort. Ich denke ich habe es jetzt so umgesetzt wie vorgeschlagen -> klappt auch einigermaßen gut!

Jedoch habe ich noch, für mich unauffindbare Fehlermeldungen...

Mein gesamter Code sieht so aus:


Code:

timevec = (1:120)'; % Das ' baut die Matrix von 1x120 zu 120x1 um.
x = timevec;
 
%%
 
%Deckenebene:
 
DL1B4 = xlsread ('DL1.xlsx',1,'J500:J619');
DL1A1 = xlsread ('DL1.xlsx',1,'C500:C619');
DL3B1 = xlsread ('DL3.xlsx',1,'G500:G619');
DL3A4 = xlsread ('DL3.xlsx',1,'F500:F619');
DL2A4 = xlsread ('DL2.xlsx',1,'F500:F619');
DL3B3 = xlsread ('DL3.xlsx',1,'I500:I619');
DL1A3 = xlsread ('DL1.xlsx',1,'E500:E619');
DL2B4 = xlsread ('DL2.xlsx',1,'J500:J619');
 
a = zeros(120,8); %120x8 Matrix
a(:,1) = DL1B4;
a(:,2) = DL1A1;
a(:,3) = DL3B1;
a(:,4) = DL3A4;
a(:,5) = DL2A4;
a(:,6) = DL3B3;
a(:,7) = DL1A3;
a(:,8) = DL2B4;
 
sensorbezDecke=['DL1B4'
 'DL1A1'
 'DL3B1'
 'DL3A4'
 'DL2A4'
 'DL3B3'
 'DL1A3'
 'DL2B4'];
 
 sensorfarbe=['r' 'g' 'b' 'c' 'm' 'y' 'k' '.g' '.r' '.g' '.b' ];
 
%%
 
% Filter
close all
%fabtast=1/60; % Abtastfrequenz (unnötig!)
fgrenz=0.01; % hier schlau lesen und oder probieren--> zwischen 0 und 1
 
[ww,xx]=butter(4,fgrenz);
 
afilt=filtfilt(ww,xx,a);
 
%% Ungefiltert:
%figure(2)
%subplot(3,1,1);
%hold
%for ii=1:8 % 8 --> wegen 8 Spalten der Matrix
%plot (x,a(:,ii),sensorfarbe(ii))
%legend ('DL1B4','DL1A1','DL3B1','DL3A4','DL2A4','DL3B3','DL1A3','DL2B4',5)
%title ('Deckenebene')
%xlabel ('Time [min]')
%ylabel ('Temperatur [°C] ungefilter')
%hold on
%grid on
%end
 
%% Gefiltert:
figure(1)
subplot(3,1,1);
hold
for ii=1:8 % 8 --> wegen 8 Spalten der Matrix
plot (x,afilt(:,ii),sensorfarbe(ii))
legend ('DL1B4','DL1A1','DL3B1','DL3A4','DL2A4','DL3B3','DL1A3','DL2B4',10)
title ('Deckenebene')
xlabel ('Time [min]')
ylabel ('Temperatur [°C] gefiltert')
hold on
grid on
end
 
%%
 
[TemperaturminimumDecke, idx] = min(a(:));
[xwert, datensatz] = ind2sub(size(a), idx);
text(xwert, TemperaturminimumDecke , ['MIN ' num2str(TemperaturminimumDecke) sensorbezDecke(idx,:)])
 
%%
[TemperaturmaximumDecke, idx] = max(a(:));
[xwert, datensatz] = ind2sub(size(a), idx);
text(xwert, TemperaturmaximumDecke, ['MAX ' num2str(TemperaturmaximumDecke)])
 
saveas (subplot(3,1,1), 'Deckenebene.png','png');
 
%FEHLER!!! INDEX ÜBERSCHREITET MATRIXDIMENSION
 
 
 
%%
 
% .........................................................................
% .........................................................................
% .........................................................................
 
 
 
% Mittelebene:
 
DL4A3 = xlsread ('DL4.xlsx',1,'E500:E619');
DL1B1 = xlsread ('DL1.xlsx',1,'G500:G619');
DL1A2 = xlsread ('DL1.xlsx',1,'D500:D619');
DL4A1 = xlsread ('DL4.xlsx',1,'C500:C619');
DL3B2 = xlsread ('DL3.xlsx',1,'H500:H619');
DL3A1 = xlsread ('DL3.xlsx',1,'C500:C619');
DL4A2 = xlsread ('DL4.xlsx',1,'D500:D619');
DL2A1 = xlsread ('DL2.xlsx',1,'C500:C619');
DL3B4 = xlsread ('DL3.xlsx',1,'J500:J619');
DL1A4 = xlsread ('DL1.xlsx',1,'F500:F619');
DL2B1 = xlsread ('DL2.xlsx',1,'G500:G619');
 
z = zeros(120,11); %120x8 Matrix
z(:,1) = DL4A3;
z(:,2) = DL1B1;
z(:,3) = DL1A2;
z(:,4) = DL4A1;
z(:,5) = DL3B2;
z(:,6) = DL3A1;
z(:,7) = DL4A2;
z(:,8) = DL2A1;
z(:,9) = DL3B4;
z(:,10) = DL1A4;
z(:,11) = DL2B1;
 
sensorbezMitte = ['DL4A3'
    'DL1B1'
    'DL1A2'
    'DL4A1'
    'DL3B2'
    'DL3A1'
    'DL4A2'
    'DL2A1'
    'DL3B4'
    'DL1A4'
    'DL2B1'];
 
zfilt=filtfilt(ww,xx,z);
 
figure(1)
subplot(3,1,2);
hold
for ii=1:11 % 11 --> wegen 11 Spalten der Matrix
plot (x,zfilt(:,ii),sensorfarbe(ii))
legend ('DL4A3','DL1B1','DL1A2','DL4A1','DL3B2','DL3A1','DL4A2','DL2A1','DL3B4','DL1A4','DL2B1',10)
title ('Mittelebene')
xlabel ('Time [min]')
ylabel ('Temperatur [°C]')
hold on
grid on
end
 
[TemperaturminimumMitte, idx] = min(z(:));
[xwert, datensatz] = ind2sub(size(z), idx);
text(xwert, TemperaturminimumMitte, ['MIN ' num2str(TemperaturminimumMitte) sensorbezMitte(idx,:)])
 
[TemperaturmaximumMitte, idx] = max(z(:));
[xwert, datensatz] = ind2sub(size(z), idx);
text(xwert, TemperaturmaximumMitte, ['MAX ' num2str(TemperaturmaximumMitte)])
 
saveas (subplot(3,1,2), 'Mittelebene.png','png');
 
 
%%
 
 
% .........................................................................
% .........................................................................
% .........................................................................
 
%Bodenebene:
 
DL1B2 = xlsread ('DL1.xlsx',1,'H500:H619'); %Für 120min
DL1B3 = xlsread ('DL1.xlsx',1,'I500:I619');
DL3A2 = xlsread ('DL3.xlsx',1,'D500:D619');
DL3A3 = xlsread ('DL3.xlsx',1,'E500:E619');
DL2A2 = xlsread ('DL2.xlsx',1,'D500:D619');
DL2A3 = xlsread ('DL2.xlsx',1,'E500:E619');
DL2B2 = xlsread ('DL2.xlsx',1,'H500:H619');
DL2B3 = xlsread ('DL2.xlsx',1,'I500:I619');
 
y = zeros(120,8); %120x8 Matrix
y(:,1) = DL1B2;
y(:,2) = DL1B3;
y(:,3) = DL3A2;
y(:,4) = DL3A3;
y(:,5) = DL2A2;
y(:,6) = DL2A3;
y(:,7) = DL2B2;
y(:,8) = DL2B3;
 
sensorbezBoden = ['DL1B2'
    'DL1B3'
    'DL3A2'
    'DL3A3'
    'DL2A2'
    'DL2A3'
    'DL2B2'
    'DL2B3'];
 
yfilt=filtfilt(ww,xx,y);
 
figure(1)
subplot(3,1,3);
hold
for ii=1:8 % 8 --> wegen 8 Spalten der Matrix
plot (x,yfilt(:,ii),sensorfarbe(ii))
legend ('DL1B2','DL1B3','DL3A2','DL3A3','DL2A2','DL2A3','DL2B2','DL2B3',5)
title ('Bodenebene')
xlabel ('Time [min]')
ylabel ('Temperatur [°C]')
hold on
grid on
end
 
[TemperaturminimumBoden, idx] = min(y(:));
[xwert, datensatz] = ind2sub(size(y), idx);
text(xwert, TemperaturminimumBoden, ['MIN ' num2str(TemperaturminimumBoden) sensorbezBoden(idx,:)])
 
[TemperaturmaximumBoden, idx] = max(y(:));
[xwert, datensatz] = ind2sub(size(y), idx);
text(xwert, TemperaturmaximumBoden, ['MAX ' num2str(TemperaturmaximumBoden)])
 
saveas (subplot(3,1,3), 'Bodenebene.eps','eps');
 
%%
 
saveas (figure(1), 'Auswertung_gesamt.png','png');
 



Ich habe meine Messwerte in drei Ebenen (Decke, Mitte, Boden) aufgeteilt.

Die Maximalwerte und die Minimalwerte werden in zwei Plots (Decke, Mitte) angezeigt. Zusätzlich sehe ich in diesen Plots den Namen des Sensors des Minimalwertes.

In der Bodenebene bekomme ich zwei Fehler ausgeworfen und sehe weder Temperaturen noch Namen:

Code:
??? Index exceeds matrix dimensions.

Error in ==> Auswertetool_final at 222

text(xwert, TemperaturminimumBoden, ['MIN ' num2str(TemperaturminimumBoden) sensorbezBoden(idx,:)])
 


Ich bin der Meinung ich habe bei der Bodenebene alles genauso gemacht wie bei den Beiden zuvor auch. Ich habe auch schon alle Matrizen überprüft, ich finde aber nichts!!!


Einen weiteren Fehler bekomme ich, wenn ich bei den beiden Ebenen Decke und Mitte, den Code so erweitern möchte, dass ich auch den Namen des Sensors mit der MAX-Temp. sehe:

Code:

[TemperaturminimumDecke, idx] = min(a(:));
[xwert, datensatz] = ind2sub(size(a), idx);
text(xwert, TemperaturminimumDecke , ['MIN ' num2str(TemperaturminimumDecke) sensorbezDecke(idx,:)])
 
%%
[TemperaturmaximumDecke, idx] = max(a(:));
[xwert, datensatz] = ind2sub(size(a), idx);
text(xwert, TemperaturmaximumDecke, ['MAX ' num2str(TemperaturmaximumDecke) sensorbezDecke(idx,:)])
 


Code:
??? Index exceeds matrix dimensions.



Ich verstehe das nicht, warum das mit dem MIN-Wert geht aber mit dem MAX-Wert nicht...
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: 25.11.2013, 14:09     Titel:
  Antworten mit Zitat      
sowas ist n fall für den debugger
setz da einfach mal ne marke und guck dir die werte an. irgendwas stimmt da ja nicht. dein index überschreitet da ja die größe der matrix..
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.11.2013, 18:52     Titel:
  Antworten mit Zitat      
Hallo,

stimmt die Beschriftung denn bei den ersten beiden Datensätzen?

Meines Erachtens muss es heißen:
Code:
text(xwert, TemperaturminimumDecke , ['MIN ' num2str(TemperaturminimumDecke) sensorbezDecke(datensatz,:)])


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.