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

Vektor durchsuchen und die gleichen Werte finden

 

Alexander1983
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2014, 17:36     Titel: Vektor durchsuchen und die gleichen Werte finden
  Antworten mit Zitat      
Hallo zusammen,

ich habe eine Frage und hoffe, dass einer von euch mir weiterhelfen kann.
Ich habe zwei folgenden Vektoren: X(213975,1) und Y(213975,1).
Es ist ja so, dass es für jeden X-Wert einen Y-Wert gibt. Soweit funktioniert alles wunderbar und ich kann alles super plotten. Aber in dem X-Vektor, der sich von Werten her zwischen 0 und 100 ändert,kommt jeder Punkt mehrfach vor. D.h. zum Beispiel der Wert X=10 kommt fünf mal (An unterschiedlichen Stellen) vor und ich habe für diesen Wert fünf verschiedene dazugehörigen Y-Werte und möchte quasi eben zum plotten und Auswerten einen Mittelwert aus diesen fünf Y-Werte, die nur zum diesem einem X-Wert gehören bilden. (Die oben genannte fünf Werte sind willkürlich hier genannt! Es ist immer unterschiedlich)
Weiß einer von euch wie ich es am besten anstellen kann?
Übre eure hilfe freue ich mich besonders.

Mein Script sieht bisher so aus:
Code:

Funktion ohne Link?
Code:

X_tmp=Xin.signals.values;
Y_tmp=Y;
n=1;
m=1;
CurrentRow_avg=1;
for i=1:1:length(X_tmp)-1

if (X_tmp(i,1)==X_tmp(i+1,1))
Y_avg_tmp(n,1)=Y_tmp(i,1);
n=n+1;
elseif (X_tmp(i,1)~=X_tmp(i+1,1))
%%Durchschnitt berechnen
Y_avg_pos(m)=mean(Y_avg_tmp>0); %% finde positive Y-Werte raus und bilde mittelwert daraus

Y_avg_neg(m)=mean(Y_avg_tmp<0);
X_avg(m)=X_tmp(i,1);

n=1;
m=m+1;
end;
end;

plot(X_avg,Y_avg_pos,'bx');


Vielen Dank und Viele Grüße


edit by denny: Bitte keine Doppelpostings
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: 24.10.2014, 17:47     Titel:
  Antworten mit Zitat      
Hallo, schau dir mal hier http://www.gomatlab.de/benachbarte-.....ight,nras+accumarray.htmlmeine Antwort vom 16.9. an. Da hatte jemand das gleiche Problem, die Variablen heißen nur anders. Im Vektor t kommen manche Werte öfters vor, von denen wird der Mittelwert gebildet und dann geplotted. Das ganze geht am besten ohne Schleife durch eine Kombination von unique() und accumarray().
Der Code:
Code:
t = [0 1 2 2 3 4 5 6 6 7];
Data = [0 1 2 2.4 3.5 4.5 5.3 -6 46 27];

% unique t-Werte und die Indizes, an denen sie auftreten
[t_unique,~,idx] = unique(t);

% Anhand der Indizes die Daten in Data akkumulieren und @mean drauf anwenden
D_mean =  accumarray(idx', Data',[], @mean);

% Ergebnis darstellung
figure
plot(t, Data, 'ko')
hold on
plot(t_unique, D_mean,'rx')
legend('original', 'mean')


accumarray() arbeitet mit Spaltenvektoren. Du hast bereits Spaltenvktoren, daher kannst du auf das Transponieren im accumarray()-Befehl verzichten.

Das Ergebnis hier:
Code:
[t_unique' D_mean]

ans =

         0         0
    1.0000    1.0000
    2.0000    2.2000
    3.0000    3.5000
    4.0000    4.5000
    5.0000    5.3000
    6.0000   20.0000
    7.0000   27.0000

Für den t-Wert 2 gibt es die Werte 2 und 2.4, das Mittel aus beiden ist 2.2. Analog dazu für den t-Wert 6: der Mittelwert von -6 und 46 ergibt 20.

Im Prinzip solltest du das dann ohne Probleme auf deinen Fall anwenden können, ansonsten bitte noch mal nachfragen.

Viel Erfolg,
Nras.

P.S.: Bitte die Code-Umgebung verwenden und bestenfalls noch den Code entsprechend einrücken, dann wird alles lesbarer.

Zuletzt bearbeitet von Nras am 24.10.2014, 19:01, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 24.10.2014, 18:02 Uhr von denny
Von Matlab intern nach Programmierung
 
Alexander1983
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2014, 18:29     Titel:
  Antworten mit Zitat      
@Nras!
Vielen herzlichen Dank! Es hat funktioniert!

Ein schönes Wochenende.
Alexander
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.