standardabweichung < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 13:06 Mo 19.11.2007 | Autor: | Donath |
Hallo,
mit welchem Mathlabbefehl kann ich die in einer Daten enthaltenen Daten so bearbeiten, dass er alle Werte die das 2,5 fache der Standardabweichung überschreiten rausschmeißt.
Danke, Danke
|
|
|
|
Hallo,
> die in einer Daten enthaltenen Daten so bearbeiten
Was war mit dem ersten "Daten" gemeint? Wohl keine Matrix, denn dann würden ja Lücken entstehen. Also gehen ich mal von einer Liste/Vektor aus.
Ich würde es so machen:
data = data(~(data >= 2.5*std_abw));
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 09:52 Di 20.11.2007 | Autor: | Donath |
Hi Martin,
im workspace heisst die datei [mm] O2_tilde_s [/mm] und hat 168000 Einzelwerte.
irgendwie geht das nciht. Kannst du nachhelfen?
|
|
|
|
|
Hallo,
also bei mir funktioniert es:
O2_tilde_s=rand(168000,1);
std_abw=std(O2_tilde_s);
O2_tilde_s = O2_tilde_s(~(O2_tilde_s >= 2.5*std_abw));
und schon habe ich nur noch ca. 121000 Elemente.
Ich könnte mir allerdings vorstellen, dass du etwas anderes meinst, denn Obiges ergibt für mich keinen Sinn. Vielleicht willst du alle Elemente wegwerfen, die zu weit vom Mittelwert entfernt sind? Das würde für mich eher Sinn machen. Ist es das?
O2_tilde_s=rand(168000,1);
std_abw=std(O2_tilde_s);
mw=mean(O2_tilde_s);
O2_tilde_s = O2_tilde_s(~(abs(O2_tilde_s - mw) >= 2.5*std_abw));
Macht auf meinen Zufallszahlen zwar überhaupt nichts, aber bei einer Normalverteilung fallen ca. 1,24% der Werte heraus.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 14:54 Mi 21.11.2007 | Autor: | Donath |
Hallo zurück,
ist es möglich aus den 168.000 bis 300.000 Werten eine gefilterte Datei am Ende zu haben, wo nun statt 2,5 facher Standardabweichung alle Werte kleiner 70 bzw. 0,7 rausgefiltert werden. Am Ende wäre eine Datei perfekt die nur noch alle Werte eben größer als 0,7 bzw. 70 enthält.
Danke Danke
lars
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:56 Mi 21.11.2007 | Autor: | Donath |
die Datei im Workspace heit nun [mm] SaO2_tilde_s
[/mm]
danke
|
|
|
|
|
Hallo,
zuallererst:
Ich habe bei meinen Posts angenommen, dass die Daten bereits in einer Variablen vorliegen. Um das Laden musst dich selbst kümmern, da ich das Format nicht kenne, in dem die Daten vorliegen. (Falls es ein Wert pro Zeile ist, geht es per data=load('Datei');). Das können wir notfalls noch klären.
Nun zu der neuen Bedingung: Wir bauen das Ganze mal neu auf.
Wir basteln uns eine Funktion, die aus einer Liste nur Elemente übernimmt, die eine bestimmte Bedingung erfüllen.
filter_daten = @(liste, bed) liste(bed(liste));
Nun musst du nur die Bedingung formulieren:
bed = @(x) x > 70;
Der Aufruf ist simpel:
data = filter_daten( data, bed);
Natürlich kannst du die Variablennamen nach Belieben variieren, wenn sie konsistent bleiben.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 10:41 Do 22.11.2007 | Autor: | Donath |
Danke lieber Martin
perfekt es funst
bis bald
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:41 Sa 24.11.2007 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|