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

>Distanz bzw Entfernungs-Matrix berechnen

 

stoxxii

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2018, 14:23     Titel: >Distanz bzw Entfernungs-Matrix berechnen
  Antworten mit Zitat      
Halloo User-Gemeinde,
halloo Admins,

ich bekomme aus einem Datensatz von 8 Geo-Orten oder auch egal ,
6 paarweisen X-Y- Daten-Punkten keine Distanz-Matrix heraus ... Crying or Very sad
bevorzugt via Pythagoras "euklidische" Entferngn... berechnet ...

also ich habe in einem US Forum eine Variante mit 2-fach Loop entdeckt ...
aber ich stolpere da noch hin & her ... Rolling Eyes

Könntet ihr mir eventuell eine Loop-freie Variante, vektorisiert, zeigen ?
oder eben einfach euere stabile Loop-Methode für eine Distanzmatrix ...

vielen Dank vorab für Tips & Tricks... Wink

beste Grüße
stoxxii


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.03.2018, 15:45     Titel:
  Antworten mit Zitat      
Hallo,

1. Wie sieht der momentane Ansatz aus? (Link?)
2. Warum hast du Zweifel an der Robustheit?
3. Welches Release verwendest du?

Der einfachste Weg wäre ab R2016b:
Code:
sqrt( (x - x.').^2 + (y - y.').^2 )

Davor kann man sich mit bsxfun behelfen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2018, 17:11     Titel: >> altes Matlab 6.5
  Antworten mit Zitat      
Hallo Harald,

ich gurke noch auf dem alten Matlab 6.5 R 13 herum ... Crying or Very sad
es genügt für mich zum Mathe Training ...

deine Pythagoras Formel kenne ich, aber hilft mir ja so nicht weiter ... Rolling Eyes

weil ich brauch den Matrix Plot von den Distanzen von eben
bspw. 5 oder 7 Daten-Pktn. ...

Gewöhnlich hat man x-y-koordinaten von einem oder mehreren Pkt..
zueinander haben die alle eine euklid. Distanz - OK ? ! - also geht auch mit "norm" ...
haben wir 5 Orten mit Lon und Lat , oder eben 5 einfache Daten-Pkt. , dann
ergibt das eine untere oder obere Dreiecks-Matrix , aber genau die bin ich zu blöd
zu plotten , naja ohne 2-fach Loop ...

Daher dachte ich, ich frag euch Profis mal, ob es eine schicke Variante ohne Looping
gibt ??? Rolling Eyes

Danke vorab..
beste grüße
stoxxii
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.03.2018, 17:43     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
ich gurke noch auf dem alten Matlab 6.5 R 13 herum ... Crying or Very sad
es genügt für mich zum Mathe Training ...

Dir dürfte aufgefallen sein, dass man dir wiederholt Vorschläge macht, die in diesem Release noch nicht funktionieren. Ja, es geht alles. Es ist aber halt vieles umständlicher.

Zitat:
deine Pythagoras Formel kenne ich, aber hilft mir ja so nicht weiter ... Rolling Eyes

... weil du kein aktuelles Release hast. In einem aktuellen Release würde das die gewünschte Matrix berechnen (implicit expansion).

In einem älteren Release kannst du wie gesagt auf bsxfun zurückgreifen.

Was du berechnen willst, war mir auch vorher schon klar.
Willst du die Matrix nun berechnen (Original-Frage) oder plotten (letzte Antwort)? Falls du sie plotten willst: wie?

Zitat:
Daher dachte ich, ich frag euch Profis mal, ob es eine schicke Variante ohne Looping gibt ???

Gibt es, und ich hatte sie dir ja auch schon geschickt.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2018, 20:39     Titel: > Dreiecks-Matrix gesucht, nur als Tabelle
  Antworten mit Zitat      
Halloo Harald,

danke das du dir soviel Schreibarbeit machst ...
ich will diese Entfernungs- bzw. Distanz-Matrix nur berechnen ...

und im Command Window ganz einfach als Zahlen-Tabelle / Tableau ausgeben ...so wie halt typischerweise Dreicks-Matrizen dargestellt werden ...

"plotten" war ein unglücklich gewählter Begriff von mir ... Crying or Very sad

Schön wäre eine Variante auch ohne Zusatz-Code "bsfun"

eine quasi selfmade-Solution ... Wink

bis danne
grüße
stoxxii
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.03.2018, 10:06     Titel:
  Antworten mit Zitat      
Hallo,

sorry, mir war nicht bewusst, dass es in deinem Release auch bsxfun noch nicht gibt.
Wenn du ohne Schleifen auskommen möchtest, bleibt dann nur repmat.
Ansonsten benötigst du eine Schleife.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2018, 14:14     Titel: >> ja , ich mach es mit Loops
  Antworten mit Zitat      
Halloo Harald,

hier meine Looping Variante : Wink
Code:
Geo = [   100 100;
             0 100;
           100 0;
           500 400;
           300 600;];
% ::::::::::::::::
x = Geo(:,1);
y = Geo(:,2);
% :::::::::::::::::::: Pythagoras ::::::::::
for i=1:size(Geo,1)
   for j=1:size(Geo,1)
       Entf(i,j) = sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);
   end
end
Entf
% :::::::::::::::::::


bis danne >> ich habe noch ein andere Problem heute reingestellt ...
grüße
stoxxii
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.03.2018, 16:20     Titel:
  Antworten mit Zitat      
Hallo,

und hier mit einer Schleife weniger.
Code:
Geo = [   100 100;
             0 100;
           100 0;
           500 400;
           300 600;];
% ::::::::::::::::
x = Geo(:,1);
y = Geo(:,2);
% :::::::::::::::::::: Pythagoras ::::::::::
for i=1:size(Geo,1)
   %for j=1:size(Geo,1)
       Entf(i,:) = sqrt((x(i)-x).^2+(y(i)-y).^2);
   %end
end
Entf


Grüße,
Harald
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.