Verfasst am: 24.10.2014, 17:36
Titel: Vektor durchsuchen und die gleichen Werte finden
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
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 = [0122345667];
Data = [0122.43.54.55.3-64627];
% 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')
@Nras!
Vielen herzlichen Dank! Es hat funktioniert!
Ein schönes Wochenende.
Alexander
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.