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

mittelwerte bilden

 

stevorino
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 05.02.2013, 11:09     Titel: mittelwerte bilden
  Antworten mit Zitat      
Hallo,

Ich habe folgende Aufgabenstellung:

11 Vektoren (2194x1)

Ich möchte aus den Werten dieser Vektoren Mittelwerte bilden, entsprechend den Wertebereichen aus Vektor 1

z.B.
Code:
WB=find(Hght>=0&Hght<=1000);


das Problem ist, dass ich jetzt nur einen Mittelwert bekomme. Ich möchte aber "fortlaufende" Mittelwerte, weil WB in Vektor 1 immer wieder vorkommt.

Viele Grüße,
Stno
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: 05.02.2013, 11:43     Titel: Re: mittelwerte bilden
  Antworten mit Zitat      
Hallo stevorino,

Ich verstehe die Frage nicht. Hat die Tatsache, dass es 11 Vektoren sind, etwas mit der Frage zu tun?

Zitat:
Ich möchte aus den Werten dieser Vektoren Mittelwerte bilden, entsprechend den Wertebereichen aus Vektor 1

Das ist mir nicht klar. Was ist denn Hght, aus dem WB gebildet wird?

Vermutlich wird das Problem klarer, wenn Du den bisherigen Code postest. Ein kleines Beispiel könnte ebenfalls hilfreich sein.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 05.02.2013, 11:49     Titel:
  Antworten mit Zitat      
Hallo Jan,

Code:
P=load('D:\Example.txt');

Hght=P(:,2);
Temp=P(:,3);
Dwpt=P(:,4);
Relh=P(:,5);
Mixr=P(:,6);
Drct=P(:,7);
Sknt=P(:,8);

WB=find(Hght>=0&Hght<=1000);
meanTemp=mean(Temp(WB));
meanDwpt=mean(Dwpt(WB));
meanRelh=mean(Relh(WB));
meanMixr=mean(Mixr(WB));
meanDrct=mean(Drct(WB));
meanSknt=mean(Sknt(WB));


Hght sieht z.B. so aus:
5
95
280
490
700
990
1200
1300
1600
4
70
300
800
1290
...

Ich möchte immer den Wertebereich (0-1000) aus Hght für die Mittelwerte der anderen Spalten verwenden. Insgesamt sollen es aber 62 Mittelwerte pro Vektor, und nicht ein gesamter Mittelwert pro Vektor sein.

Hoffe, dass ist verständlich jetzt.

Stno
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: 05.02.2013, 13:33     Titel:
  Antworten mit Zitat      
Hallo stevorino,

Was bedeutet es denn mathematisch, einen "Wertebereich für einen Mittelwert der anderen Spalten zu verwenden"?
Meinst Du mit "Wertebereich" eventuell keinen Wertebereich, sondern die Indices der Elemente?

Wieso sind es ausgerechnet 62 Mittelwerte? Und wie bekommt man mehrere Mittelwerte aus einem Vektor??

Ich verstehe die Frage also immer noch nicht.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 05.02.2013, 14:38     Titel:
  Antworten mit Zitat      
mit wertebereich meinte ich alle werte zwischen 0 und 1000.

62 werte - eigentlich egal. wollte nur angeben, dass ich nicht einen, sondern mehrere Mittelwerte brauche.

mehrere Mittelwerte aus den jeweiligen Teilabschnitten des Vektors.

ich hab scheinbar echt schwierigkeiten, die Frage zu formulieren Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
stevorino
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 05.02.2013, 17:06     Titel:
  Antworten mit Zitat      
Ok, hier noch mal vereinfacht: 2 Vektoren (Hght und Temp). Ich möchte für Temp 2 Mittelwerte berechnen, entsprechend Hght >0 und <1000. In dem Fall also:
(0.4 + 0.3 + 0.4 + 0.6 + 0.6 + 0.5)/6 und (0.2 + 0.5 + 0.3 + 0.2)/4.

Hght Temp
5 0.4
95 0.3
280 0.4
490 0.6
700 0.6
990 0.5
1200 0.3
1300 0.2
1600 0.1
4 0.2
70 0.5
300 0.3
800 0.2
1290 0.1
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: 05.02.2013, 19:12     Titel:
  Antworten mit Zitat      
Hallo stevorino,

Es hört sich für mich immer rätselhafter an.
Ich kann mit "2 Mittelwerte entsprechend Hght>0 & <1000" einfach nichts anfangen. Ich sehe, dass Hght ein paar Werte innerhalb dieses Bereichs hat, und ein paar ausserhalb. Aber welche Verbindung besteht nun zu Temp?!

Die ersten 6 Elemente von Hght sind im angegebenen Intervall, und Du bildest den Mittelwert über die ersten 6 elemente von Temp. Und dann? Sollen dann alle Werte von Temp ignoriert werden, solange Hght ausserhalb des Intervalls liegt? Ah, das könnte sein. Also ein Versuch (leider muss ich jetzt die Inputs umformatieren - Beispiele in valider Matlab-Syntax lassen sich effizienter verwenden...)
Code:
Hght = [5; 95;280; 490; 700; 990; 1200; 1300; 1600; 4; 70; 300; 800; 1290];
Tmp = [0.4; 0.3; 0.4; 0.6; 0.6; 0.5; 0.3; 0.2; 0.1; 0.2; 0.5; 0.3; 0.2; 0.1];
inLimits = [false, (Hght > 0 & Hght < 1000), false];
ini = strfind(inLimits, [false, true]);
fin = strfind(inLimits, [true, false]) - 1;
result = zeros(1, length(ini))
for k = 1:length(ini)
  result(k) = mean(Temp(ini(k):fin(k));
end

Hilft das?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 06.02.2013, 10:04     Titel:
  Antworten mit Zitat      
Hallo Jan,

Danke, und ja Du hast das richtig verstanden. Wenn Hght in dem angegebenen Intervall liegen, soll die entsprechenden Werte von Temp gemittelt werden. Wenn sie außerhalb liegen, dann ignoriert.

Ich habe Deinen Code probiert:
Code:
Hght = [5; 95;280; 490; 700; 990; 1200; 1300; 1600; 4; 70; 300; 800; 1290];
Tmp = [0.4; 0.3; 0.4; 0.6; 0.6; 0.5; 0.3; 0.2; 0.1; 0.2; 0.5; 0.3; 0.2; 0.1];
inLimits = [false, (Hght > 0 & Hght < 1000), false];
ini = strfind(inLimits, [false, true]);
fin = strfind(inLimits, [true, false]) - 1;
result = zeros(1, length(ini));
for k = 1:length(ini)
  result(k) = mean(Temp(ini(k):fin(k)));
end


und bekomme folgende Fehlermeldung:
Zitat:
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

Error in ==> Untitled at 4
inLimits = [false, (Hght > 0 & Hght < 1000), false];


verstehe ich nicht, ganz, weil horzcat ja gar nicht verwendet wird??

Viele Grüße,
Stno
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 - 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.