Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Studierende:
Praktikant Toolentwicklung Matlab (m/w)
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Fellbach

Abschlussarbeit / Praktikum: Entwicklung Matlab (m/w)
Branche: Informationstechnologie, Elektrotechnik, Elektronik
GIGATRONIK Technologies GmbH - Ulm

Studentische Mitarbeit - Fahrzeugmessungen
Branche: mehrere
IAV GmbH - Ingenieurgesellschaft Auto und Verkehr - Berlin

Werkstudent (m/w) High End GNSS Simulation mit modernsten Signalgeneratoren
Branche: Mess-, Regel-, Automatisierungstechnik, Telekommunikation, Nachrichtentechnik
ROHDE & SCHWARZ GmbH & Co. KG - München

Praktikant Testsystemaufbau (m/w)
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Sindelfingen

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Punkte färben, die außerhalb der Grenzen liegen

 

remix92
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2017, 15:25     Titel: Punkte färben, die außerhalb der Grenzen liegen
  Antworten mit Zitat      
Hallo zusammen,

ich hänge an ein Problem fest...

undzwar würde ich gerne Punkte, die außerhalb der Standardabweichung liegen, gerne rot markieren.
Mein Code sieht folgendermaßen aus:
Code:

b=7;
TestData = randn(100);
for k=1:size(TestData,2);
   
mean_new(k,:) = mean(TestData(:,k));    
std_big(k,:)  = mean(TestData(:,k))  +  std(TestData(:,k));
std_low(k,:)  = mean(TestData(:,k))  -  std(TestData(:,k));

plot(TestData(:,b),'b.')

 line(xlim,[mean_new(b,1),mean_new(b,1)],'Color','green')
 line(xlim,[std_low(b,1),std_low(b,1)],'Color','red')
 line(xlim,[std_big(b,1),std_big(b,1)],'Color','red')

if TestData(:,b) > std_big(b,1)    
   plot(TestData(:,b),'r.')
end    
if TestData(:,b) < std_low(b,1)    
   plot(TestData(:,b),'r.')
end    

lgd= legend (['Data Points'],['Ideal = ' num2str(mean_new(b,1))],['UpperLimit = ' num2str(std_big(b,1))], ['LowerLimit = ' num2str(std_low(b,1))]  );
set(lgd,'Location','northEastoutside','FontSize',12);        
end
 


In Diesem Beispiel erzeuge ich ein 100x100 matrix, bei dem ich dann die Punkte von Spalte 7 plotten lasse. Dazu berechne ich den Ideal Wert mit der Funktion mean und setzte jeweils als Grenzen fest:
obere Grenze: IdealWert + Standardabweichung
untere Grenze: IdealWert - Standardabweichung

nun würde ich gerne alle Punkte, die außerhalb der Grenzen liegen als Rote Punkte im Plot darstellen lassen...

Leider weiß ich nicht wie....

Wäre für jede Hilfe sehr Dankbar Smile

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 17.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 03.11.2017, 17:36     Titel:
  Antworten mit Zitat      
Hallo,

Code:
datavec = TestData(:,b);
plot(datavec(datavec > std_big(b,1)),'r.')


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2017, 17:45     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Antwort Smile

Es funktioniert,aber nicht so wie es gerne haben würde Smile
Es werden zusätzliche rote Punkte eingefügt.
Ich würde aber gerne mir wünschen, dass die "Außreiser" durch rote Punkte ersetzt werden.
Siehe Bilder Smile

Ist es denn möglich die Ausreißer durch rote Punkte zu ersetzen ?

Vielen Dank nochmal für die Hilfe Smile

Gruß

STD_Bild.jpg
 Beschreibung:

Download
 Dateiname:  STD_Bild.jpg
 Dateigröße:  20.29 KB
 Heruntergeladen:  4 mal
STD_Bild.fig
 Beschreibung:

Download
 Dateiname:  STD_Bild.fig
 Dateigröße:  499.44 KB
 Heruntergeladen:  2 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 04.11.2017, 21:39     Titel:
  Antworten mit Zitat      
Hallo,

dann solltest du den vorherigen Plot durch eine logische Bedingung auf die gewünschten Punkte beschränken.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2017, 17:28     Titel:
  Antworten mit Zitat      
Hallo,
das habe ich versucht, aber leider ohne Erfolg...

Code:

hold on
datavec = TestData(:,b);
plot(datavec(std_low(b,1) < datavec < std_big(b,1)) ,'b.')
plot(datavec (datavec > std_big(b,1)),'r.')
plot(datavec (datavec < std_low(b,1)),'r.')
 line(xlim,[mean_new(b,1),mean_new(b,1)],'Color','green')
 line(xlim,[std_low(b,1),std_low(b,1)],'Color','red')
 line(xlim,[std_big(b,1),std_big(b,1)],'Color','red')
 


Wo liegt mein Feher ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 05.11.2017, 19:03     Titel:
  Antworten mit Zitat      
Hallo,

ein Fehler ist hier:
Code:
plot(datavec(std_low(b,1) < datavec & datavec< std_big(b,1)) ,'b.')


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2017, 19:48     Titel:
  Antworten mit Zitat      
Vielen Dank Smile

Ist es denn möglich, die Ausreißer (rot markierte Punkte) auf die ursprüngliche Position zu versetzen ?

Die Bilder "orginal" und "bearbeitet" im Anhang zeigen den Unterschied Smile
Ich habe es versucht mit folgendem Code, leider ohne Erfolg...
Code:

datavec(m,1) = TestData(:,b);

for m=1:size(datavec,1);

hold on
 plot(datavec(std_low(b,1) < datavec & datavec< std_big(b,1)) ,'b.')
 plot(datavec(m,1) (datavec > std_big(b,1)),'r.')
 plot(datavec(m,1) (datavec < std_low(b,1)),'r.')
end
 


orginal.jpg
 Beschreibung:

Download
 Dateiname:  orginal.jpg
 Dateigröße:  42.52 KB
 Heruntergeladen:  4 mal
bearbeitet.jpg
 Beschreibung:

Download
 Dateiname:  bearbeitet.jpg
 Dateigröße:  35.21 KB
 Heruntergeladen:  3 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 05.11.2017, 21:43     Titel:
  Antworten mit Zitat      
Hallo,

ich würde generell die Syntax plot(x,y) verwenden. In deinem Fall mit x = 1:length(y) . Dann kannst du aus y und x die nicht gewünschten Punkte entfernen, und die verbleibenden Punkte bleiben an der ursprünglichen Position.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2017, 16:49     Titel:
  Antworten mit Zitat      
Hallo,

Vielen Dank für deinen Tipp...

Leider weiß ich nicht so recht, dein Tipp umzusetzen...
Der Befehl
Code:
ist mir zwar bekannt, aber kann den für mein Fall leider nicht umsetzen.....

Im Anhang befindet sich auch das M.File

Wenn du eventuell mal zeit hättest könntest du da mal reinschauen ?
Wäre sehr nett Smile

Der Interessante Teil vom Code wäre nur der:
Code:

datavec = TestData(:,k);
figure(k)
x = 1:length(datavec);

hold on
plot(datavec (std_low(k,1) < datavec  & datavec < std_big(k,1)) ,'b.')


plot(datavec (datavec  > std_big(k,1)),'r.')
plot(datavec (datavec  < std_low(k,1)),'r.')
 


Variable k greift Spaltenweiße auf alle Zeileneinträge zu!

Gruß

std_big_data.m
 Beschreibung:

Download
 Dateiname:  std_big_data.m
 Dateigröße:  864 Bytes
 Heruntergeladen:  3 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 06.11.2017, 16:58     Titel:
  Antworten mit Zitat      
Hallo,

Code:
TestData = randn(1000,3);
for k=1:size(TestData,2);
   
mean_new(k,:) = mean(TestData(:,k));    
std_big(k,:)  = mean(TestData(:,k))  +  std(TestData(:,k));
std_low(k,:)  = mean(TestData(:,k))  -  std(TestData(:,k));

datavec = TestData(:,k);
figure(k)
x = 1:length(datavec);

hold on
filt1 = std_low(k,1) < datavec  & datavec < std_big(k,1);
plot(x(filt1), datavec(filt1) ,'b.')

 
line(xlim,[mean_new(k,1),mean_new(k,1)],'Color','green')
line(xlim,[std_low(k,1),std_low(k,1)],'Color','red')
line(xlim,[std_big(k,1),std_big(k,1)],'Color','red')


filt2 =  datavec  > std_big(k,1);
plot(x(filt2), datavec (filt2),'r.')

filt3 =  datavec  < std_low(k,1);
plot(x(filt3), datavec (filt3),'r.')

lgd= legend (['Data Points'],['Ideal = ' num2str(mean_new(k,1))],['UpperLimit = ' num2str(std_big(k,1))], ['LowerLimit = ' num2str(std_low(k,1))]  );
set(lgd,'Location','northEastoutside','FontSize',12);
hold off
end


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2017, 17:19     Titel:
  Antworten mit Zitat      
Perfekt Smile
Vielen Dank Smile
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2017 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.