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

Gleichverteilte Stichproe aus Matrix

 

Lloewe
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 17.03.09
Wohnort: Göttingen
Version: ---
     Beitrag Verfasst am: 30.08.2009, 17:08     Titel: Gleichverteilte Stichproe aus Matrix
  Antworten mit Zitat      
Hallo Allerseits,
ich habe ein kleines Problem und hoffe, dass hier jemand mit einer guten Idee zu finden ist Smile

Ich habe eine Matrix mit 85 Zeilen und 2 Spalten, es handelt sich um x- und y-Werte eine Koordinatenmessreihe.

Nun will ich aus diesen "Datensätzen" eine beliebe, gleichverteilte Menge entnehmen. Also n aus N bilden. Ich habe versucht dies über eine for-Schleife mit Adressierung der Datensätze über (i*(N/n), Smile zu lösen, das Problem was sich dabei ergibt (ich habe für die "Schrittweite" floor(N/n) bzw. round(N/n) verwendet) ist, dass ich bei floor einen sehr großen Fehler bekomme wenn n->N geht, also ich nach ca 3/4 der Datensätze schon 30 extrahiert habe, da immer abgerundet wird.

Bei round erhalte ich leider nicht immer wirklich n Datensätze sondern bei n=30 z.B. nur 28 da zur nächsten Dezimalzahl gerundet wird und ich schon beim 29. Datensatz über die größe der Matrix hinausschießen würde.

Nun zu meiner Frage, gibt es in Matlab einen Befehl für die Entnahme einer (annähernd) gleichverteilten Stichprobe?
Oder eventuell einfach eine elegantere Methode es händisch zu lösen?

Ich bin für alle Hinweise dankbar,
herzlichen Gruß
Leander
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.08.2009, 22:34     Titel:
  Antworten mit Zitat      
Mein Vorschlag:
randperm(85), und dann die ersten n Elemente davon als Indizes nehmen.

Dürfte effizient sein, was den Programmieraufwand angeht; Performance wäre dann nochmal eine andere Frage, die aber bei 85 Elementen nicht groß ins Gewicht fallen dürfte.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 17.03.09
Wohnort: Göttingen
Version: ---
     Beitrag Verfasst am: 07.09.2009, 16:13     Titel:
  Antworten mit Zitat      
Hallo Harald,
vielen Dank für den Tipp!

randperm entspricht zwar leider nicht 100-prozentig dem angestrebten Ergebnis hat mich aber schonmal weitergebracht.

Es geht ja leider um Messpunkte auf einer Kreisbahn (Bohrung), die mit einer bestimmten Messstrategie angefahren werden, d.h. die angefahrenen Punkte haben alle (mehr oder weniger) den gleichen Abstand auf dem Kreisumfang voneinander. Dies ist durch eine komplett zufällige Auswahl der vorhandenen Messpunkte leider nicht gegeben. Aber es ist alle mal besser als die Funktion rand oder floor, da sich die Rundungsfehler nicht aufaddieren.

Vielleicht hat ja jemand noch eine andere Idee wie man dieses Problem umgehen kann.

Herzlichen Gruß
Leander
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 07.09.2009, 16:57     Titel:
  Antworten mit Zitat      
Hallo

vielleicht habe ich nicht ganz verstanden, aber mein Vorschlag:

Code:

N = 85;
n = 30;
% Divisionsergebnis als Zähler verwenden
punkte= round(1: N/n: N)
 
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 - 2024 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.