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

Differenzen berechnen

 

mathphys
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 17.07.2011, 15:59     Titel:
  Antworten mit Zitat      
Ich danke dir für deine Mühen. Ich möchte versuchen in Zeilen zu arbeiten, da ich sonst komplett verwirrt bin, was ich da eigentlich mache. Man sollte das Ziel nicht aus den Augen verlieren?

Ein paar Fragen zur Interpretation: Die matrix temp entsteht doch, dass in jedem Schleifendurchgang eine Zeile von allen anderen abgezogen wird.

Wie sehe ich an dem Code welche Zeile von allen anderen abgezogen wird? in bsxfun steht als zweites Argument ja die ganze Matrix.

Wie lässt sich dies verallgemeinern, dass diese Operation für alle Zeilen durchgeführt wird?

Gruß
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

ob die Vektoren nun in Zeilen oder Spalten stehen, sollte relativ egal sein? Es gibt ja Zeilen und Spaltenvektoren.
Für MATLAB ist es "natürlicher", wenn die Vektoren in Spalten stehen - nicht zuletzt da eine Matrix im Speicher linear - und zwar spaltenweise - abgelegt wird.

Der bsxfun-Befehl wird ja in der for-Schleife durchgeführt. In jeder Iteration wird von der gesamten Matrix (2. Argument) eine Zeile (nämlich die k-te, siehe 3. Argument) abgezogen. Es ist die Genialität von bsxfun, dass das tatsächlich klappt und spaltenweise durchgeführt wird.

Eine Verallgemeinerung in der Hinsicht, dass die Operation für alle Zeilen gleichzeitig durchgeführt wird, ist schwierig bis unmöglich. Deshalb habe ich auch die for-Schleife verwendet. Oder welche Art der Verallgemeinerung meintest du?

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 17.07.2011, 16:16     Titel:
  Antworten mit Zitat      
Hi

ich verliere leicht den Überblick von meinem Programmier Ziel, daher bin ich nicht sicher ob ich das verallgemeinern muss oder nicht.

Was ich hier machen möchte ist eine Liste gewinnen mit allen Abständen von allen Punkten zueinander, damit ich diese dann sortieren kann in gleich lange und nicht gleich lange Abstände, damit ich so ein regelmäßiges Sechseck in den Daten finden kann.

Das was bsxfun macht klingt super, doch am Ende habe ich bei diesem code in der matrix temp eine Dimension von mx3, genau so wie auch die Matrix aus der die Daten kommen. Alle möglichen Differenzen müssen doch viel, viel mehr sein, kombinatorisch gedacht.

Oder stehe ich da jetzt auf dem Schlauch?

Gruß

p.s.
ich glaube ich muss dir einen Kuchen backen und nach München schicken. Ist ja mega nett wie viel Hilfe ich hier bekomme Very Happy
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

temp steht bei mir für temporär/temporary. Die Ergebnisse der Berechnung findest du in diffValues. Wie schon vorher erwähnt ist diffValues(i,j) die Norm der Differenz der i-ten und j-ten Spalte (bzw. Zeile, je nachdem welche Variante des Codes du verwendest).
Nimm dir doch, wie ich es gemacht habe, ein einfaches Beispiel und schau dir da das Ergebnis an...

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 17.07.2011, 16:32     Titel:
  Antworten mit Zitat      
Hi

In der Matrix diffValues steht jeder einzelne Eintrag für den Abstand zweier Punkte oder?

Woher weiß ich genau welche Punkte das sind? Wenn ich beispielsweise den Koeffizient in der 20. Zeile und 18. Spalte nehme, woher weiss ich dann welcher Abstand das ist?

Das ist sehr wichtig, denn wenn ich in diffValues nach gleichen Werten suche um mein Sechseck zu finden, dann muss ich ja wissen zu welchen Punkte die gehören. Punkte natürlich aus den ursprünglich eingelesenen Daten, bei mir data_final.

Ja, du hast Recht, ich werde mir das in Ruhe mit einer kleinen Beispiel Matrix noch ansehen.

Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Wenn ich beispielsweise den Koeffizient in der 20. Zeile und 18. Spalte nehme, woher weiss ich dann welcher Abstand das ist?


Der Abstand zwischen dem 20. und 18. Vektor. Kann man sich vorstellen wie im Straßenatlas die Entfernungstabelle zwischen verschiedenen Städten.
http://www.auslandversicherung.de/e.....stabelle_deutschland.html
Nur dass hier eben die Nummern der jeweiligen Vektoren daneben bzw. drüber stehen.

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 17.07.2011, 16:40     Titel:
  Antworten mit Zitat      
WOW, ich hätte jetzt mit irgend einer schlimm komplizierten Erklärung gerechnet, doch dass das so klar interpretiert werden kann.

Du hast recht, mit Matrizen zu arbeiten, auch wenn ich noch Bauchweh habe, ist wirklich viel besser, als wenn ich das mit ewigen for schleifen und eval Befehlen getan hätte.

Danke, habt alle vielen Dank. Ich habe das Thema dann als beantwortet markiert Wink
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
mathphys
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 18.07.2011, 10:15     Titel:
  Antworten mit Zitat      
Ich möchte das Thema weiter diskutieren, da mit der Abstadsmatrix vielleicht doch erfolg erzielt werden kann?

Frage an euch:

Wie könnte man nun, mit dieser Matrix herausfinden, welche Punkte für ein regelmäßiges Sechseck in Frage kämen?

Für Tipps bin ich dankbar.

Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich bin bei deiner Frage schon davon ausgegangen, dass das zusammenhängt.
Rückfragen in diesem Zusammenhang:
- ist die ungefähre Seitenlänge des Sechsecks bekannt?
- das Sechseck sollte wohl (näherungsweise) in einer Ebene liegen, d.h. es reicht nicht, die Abstände der Punkte zu überprüfen?

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 18.07.2011, 10:28     Titel:
  Antworten mit Zitat      
Hallo

nein, es ist leider nichts bekannt, außer das man weiss, dass die Sechsecke aneinander gesetzt sind. So wie in dem Bild von dem link den ich gestern schickte.

Ja, sie sind leider nicht perfekt in einer Ebene. Daher auch der Epsilon-Umgebung Thread gestern.

Abstände alleine würden nicht reichen, doch bei Punkten, bei denen die Abstände zu groß wären, wüsste man, dass sie nicht dazu gehören. Auch wenn es kein perfektes Sechseck ist, so ist es das fast und Punkte die dann ganz weit weg sind, könnte man so eliminieren.

Viele Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

zur besseren Vorstellung des ganzen bitte zwei Sachen bereitstellen:
1) ungefähre Anzahl der Punkte
2) einen 3D-Scatter Plot der Punkte
Code:


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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 18.07.2011, 11:42     Titel:
  Antworten mit Zitat      
Hi

die Anzahl der Datenpunkte schwnakt sehr. Aus der Chemie weiss ich, dass ich alle Atome die nicht Kohlenstoff oder Stickstoff sind löschen kann. Das macht ein Programm mit dem Namen Gaussian für mich. Was ich dann erhalte habe ich hier geplottet mit dem Befehl plot3. Dies ist aber nur ein Beispieldatensatz. Es können auch mehr Punkte sein. In den meisten Anwendungen jedoch kaum mehr als ca. 100, da das Protein von Gaussian abgeschnitten wird.



Gruß

Bildschirmfoto.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto.png
 Dateigröße:  35.83 KB
 Heruntergeladen:  683 mal

_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.07.2011, 13:49     Titel:
  Antworten mit Zitat      
Hallo,

kannst du das mal als Datensatz anhängen?
Wenn ich mal länger Zeit habe, würde ich mich mal dran versuchen.

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 18.07.2011, 16:40     Titel:
  Antworten mit Zitat      
Hi

das wäre wirklich mega lieb von dir. Jedoch möchte ich auch nicht, dass du mir meinen Job machst. Ich muss und will es ja selbst lernen und da ich noch öfter in matlab programmieren will, möchte ich natürlich lernen wie man es richtig macht. Freue mich darauf, wenn morgen die beiden Bücher mit der Post kommen, die ich bestellt habe. Smile

das sind die Datenpunkte aus dem Plot:

Code:
data_final =

    2.8238   -0.0419    0.7378
    3.5633   -1.1413    0.3329
    2.8504   -2.2792   -0.1201
    1.4813   -2.3929   -0.2370
    0.7861   -1.1966    0.1976
   -0.5722   -1.1927    0.1270
   -1.3171   -0.0907    0.4917
   -2.7119   -0.0871    0.3793
   -3.4710    1.0198    0.7441
   -4.9734    0.9898    0.6099
   -2.8016    2.1650    1.2349
   -3.5754    3.3972    1.6359
   -1.4084    2.1566    1.3450
   -0.6319    1.0461    0.9885
    0.7729    1.0246    1.1141
    1.5065   -0.0776    0.6785
    1.4706    2.3017    1.3295
    1.5496    3.2306    0.0980
    2.9793    3.3505   -0.4772
    3.1910    4.6776   -1.2395
    4.5162    4.6527   -2.0059


Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.07.2011, 21:48     Titel:
  Antworten mit Zitat      
Hallo,

ich habe es nun selbst probiert und muss sagen, dass das zum Einstieg ein sehr, sehr verzwicktes Problem ist - oder ich mache es zu kompliziert. Ich wollte jedenfalls verifizieren, dass der von mir an anderer Stelle vorgeschlagene Algorithmus sinnvoll ist, und das geht eben manchmal nur, indem man's umsetzt. Wie auch immer, es war auch für mich eine schöne Herausforderung.

Der Einfachheit habe ich ein regelmäßiges Sechseck als ein Sechseck definiert, in dem benachbarte Punkte etwa gleichweit voneinander entfernt sind.

Lass mal die Hauptdatei laufen
...
und du siehst:
- der Code sieht nicht schön aus. Ich habe jedoch Schwierigkeiten, ihn schöner zu gestalten.
- die Sechsecke werden gefunden.
- sie werden teilweise mehrfach gefunden
- es werden auch Sechsecke gefunden, die obiger Definition genügen, aber kaum Sechsecke im von dir angedachten Sinn sind (als mir das klar wurde, musste ich doch lachen...)

Ich habe das ein wenig kommentiert und auch Kommentare an den Stellen hinterlassen, wo du noch dran arbeiten solltest.

Natürlich kannst du jetzt versuchen, das als Programmierübung selber und von vorne zu machen. Ich fürchte aber, dass du als Einsteiger/in in MATLAB sehr lange (mehrere Tage bis Wochen) damit zubringen würdest.
Das Verstehen und Anpassen/Verbessern meines Vorschlags dürfte für den Anfang schon schwierig genug sein. Aber vielleicht fällts ja nach dem Studium des einführenden Buchs leichter.

Viele Grüße, und viel Spaß beim Lernen von MATLAB
Harald

P.S.: Mir fällt noch ein: 0.05 und 0.075 sind eher willkürlich gewählte Toleranzen.
P.P.S.: Falls du irgendwann n-Ecke statt Sechsecke suchst: ich bin raus Wink

findnext.m
 Beschreibung:
Hilfsdatei

Download
 Dateiname:  findnext.m
 Dateigröße:  332 Bytes
 Heruntergeladen:  344 mal
findeSechseck.m
 Beschreibung:
Hauptdatei

Download
 Dateiname:  findeSechseck.m
 Dateigröße:  3.7 KB
 Heruntergeladen:  348 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  Weiter

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.