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

"pdist"

 

andi_1
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 15.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2010, 13:54     Titel: "pdist"
  Antworten mit Zitat      
Hallo zusammen,

es gibt die Funktion "pdist", die mir differenzen zwischen Werten auflistet.
Bsp:
Code:

D = pdist(X,'euclidean');
 

D enthält nur die Differenzen der Werte in X

Meine Frage ist nun: Kann ich von D wieder irgendwie auf X schliessen.
Ich möchte zb sagen: Für alle Differenzen in D, die kleiner als 0.5 sind, gib mir das entsprechende X an.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Linus
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 30.08.10
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.09.2010, 13:57     Titel: Re: "pdist"
  Antworten mit Zitat      
andi_1 hat Folgendes geschrieben:

Ich möchte zb sagen: Für alle Differenzen in D, die kleiner als 0.5 sind, gib mir das entsprechende X an.

Das dürfte so funktionieren:

Code:

D = pdist(X,'euclidean');
Y = X(D < 0.5);
 


Du nutzt also einen logischen Vektor als Index, der nur die Werte "durchlässt", wo er true ist. (D<0.5) ersztellt dir dieses "Filter".
_________________

RWTH - Mindstorms NXT Toolbox - free & open source
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_1
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 15.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2010, 14:28     Titel:
  Antworten mit Zitat      
Hallo Linus,

bei diesem hier:
Code:

Z10 = [1,
    1.4,
    1.5,
    1.6,
    2.5,
    2.6,
    3.5,
    4.5,
    4.8]
Z11 = pdist(Z10,'euclid');
Y = Z10(Z11 < 0.5);
 

bekomme ich das hier:
Code:

??? Index exceeds matrix dimensions.
 


hab ich da nen Denkfehler?
Private Nachricht senden Benutzer-Profile anzeigen
 
Linus
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 30.08.10
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.09.2010, 14:41     Titel:
  Antworten mit Zitat      
Ah ok, ich sehe gerade, dass dir pdist viel mehr Zahlen zurückgibt (also Z11 viel mehr Elemente hat) als in Z10 drin sind. Klar, du kriegst ja ne Entfernungs-Matrix (von jedem zu jedem Element).

Würde das erstmal schön zu ner quadratischen Matrix konvertieren:

Code:

Z12 = squareform(Z11);
 


Und jetzt hast du in Z12 also eine 9x9 Matrix, wo du die Entfernungen der Elemente aus Z10 hast. Mit

Code:

Z13 = Z12 < 0.5;
 

hast du dann die gewünschte logische Matrix.


Du musst dir jetzt natürlich noch überlegen, wie es weitergeht. Also wenn du in Z13 an der Stelle (i, j) eine 1 hast, bedeutet das, die Entfernung von Z10(i) nach Z10(j) ist < 0.5. Klar?
_________________

RWTH - Mindstorms NXT Toolbox - free & open source
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_1
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 15.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2010, 14:53     Titel:
  Antworten mit Zitat      
Hallo Linus,

das ist soweit klar. habe nur gerade keinen Plan, wie ich von Z13 einen Bezug zu Z10 herstellen soll.
Ich will ja am Ende eine Matrix, basierend auf Z10, die aber nur die Werte enthält, für die Z11 < 0.5 ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
Linus
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 30.08.10
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.09.2010, 15:40     Titel:
  Antworten mit Zitat      
Ich hab noch nicht ganz verstanden, wo exakt du hin willst.

Du hast 1-D Quelldaten. Daraus wurde dir jetzt eine 2D-Matrix erstellt, quasi Entfernung "jeder zu jedem". Wie willst du daraus jetzt wieder 1D-Daten machen? Das geht ja nicht...

Das Problem ist: Entfernung (1 Zahl) kommt aus Start+Ende (2 Zahlen). D.h. Du hast am Ende immer Zahlenpaare, die sich auf eine bestimmte Entfernung beziehen. Die sind jetzt in der Matrix kodiert.
_________________

RWTH - Mindstorms NXT Toolbox - free & open source
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_1
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 15.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2010, 16:04     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

Das Problem ist: Entfernung (1 Zahl) kommt aus Start+Ende (2 Zahlen). D.h. Du hast am Ende immer Zahlenpaare, die sich auf eine bestimmte Entfernung beziehen.


genau das ist ja das Problem. Die Ausgabematrix soll nur genau diese Werte enthalten, zwisch denen der Abstand < 0.5 ist.
Beispiel:
Code:

% Eingangsmatrix:
Z10 = [1,
    1.4,
    1.5,
    1.6,
    2.5,
    3.5,
    4.5,
    4.8,
    5.5,
    13]

% Ausgabematrix:
Z10 = [1,
    1.4,
    1.5,
    1.6,
    4.5,
    4.8]
 


Gruss
Private Nachricht senden Benutzer-Profile anzeigen
 
Linus
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 30.08.10
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.09.2010, 17:38     Titel:
  Antworten mit Zitat      
andi_1 hat Folgendes geschrieben:
Hallo,
genau das ist ja das Problem. Die Ausgabematrix soll nur genau diese Werte enthalten, zwisch denen der Abstand < 0.5 ist.

Das geht so nicht, die Abstandsbeziehung ist ja mehrdeutig. Evtl. liegt zwischen Wert #1 und #2 nur Abstand 0.5, aber zwischen 1 und 3 halt mehr. Soll Wert #1 dann in die Liste?
_________________

RWTH - Mindstorms NXT Toolbox - free & open source
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_1
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 15.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2010, 10:40     Titel:
  Antworten mit Zitat      
Zitat:
Evtl. liegt zwischen Wert #1 und #2 nur Abstand 0.5, aber zwischen 1 und 3 halt mehr. Soll Wert #1 dann in die Liste?


sobald zwischen zwei werten der abstand kleiner als 0.5 ist, sollen beide in die liste. da kann zwischen #1 und #2 0.5 sein und zwischen #1 und #3 oder #2 und #3 grössere werte.
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.