|
|
Wie vergleicht man Matrizen unterschiedlicher Länge? |
|
Einspritzvorgang |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.11.2012, 11:49
Titel: Wie vergleicht man Matrizen unterschiedlicher Länge?
|
 |
Ich stehe vor einem gewaltigen Problem und habe schon etliche Foren nach einer Lösung durchsucht.
Ich habe zwei Matrizen mit jeweils 3 Spalten. Die Anzahl der Reihen unterscheiden sich jedoch leicht (70 und 74 Reihen). Nun möchte ich die Reihen mit denen aus der anderen Matrix vergleichen. Sie müssen nicht gleich sein, können auch ähnlich sein. Gibt es da einen Ansatz?
ismember funktioniert so nicht, da die elemente nie genau gleich sind. kann man bei ismember vielleicht einen schwellwert einbauen?
hier mal meine Matrizen
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.11.2012, 12:13
Titel:
|
 |
Hallo,
so ein Schwellwert kann meines Wissens nicht direkt eingebaut werden, siehe auch Dokumentation von ISMEMBER.
Was willst du denn genau wissen? Welche Zeilen der ersten Matrix annähernd in der zweiten vorkommen?
Es wäre hilfreich, wenn du den ismember-Befehl angibst, den du versucht hast.
Grüße,
Harald
|
|
|
Einspritzvorgang |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.11.2012, 12:38
Titel:
|
 |
Zitat: |
Was willst du denn genau wissen? Welche Zeilen der ersten Matrix annähernd in der zweiten vorkommen? |
Genau das.
Mein Ansatz war wie folgt: Habe beie Matritzen nach der ersten Spalte (Das sind Radii von Kreisen, die anderen beiden sind deren Koordinaten) sortiert. Dann habe ich der kleineren Matrix ein paar extra Zeilen, welche nur Nullen enthalten verpasst. Dies ist nötig, da ich beide Matrizen danach subtrahieren will. Dadurch (mit abs) habe ich den Versatz bekommen, welcher ja ein gutes Maß für die Ähnlichkeit ist.
Allerdings ist das keine elegante Lösung da, ich ja zum einen die letzten Zeilen der langen Matrix nicht betrachte und zum anderen 2 ähnliche Zeilen, die nicht auf der gleichen Stufe sind, gänzlich ignoriert werden....
Die idee mit ismember habe ich wieder verworfen, da ich keine Möglichkeit gefunden habe, einen Schwellwert einzubauen. Gibt es eine?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 07.11.2012, 12:56
Titel: Re: Wie vergleicht man Matrizen unterschiedlicher Länge?
|
 |
Hallo Einspritzvorgang,
Was genau bedeutet "ähnlich"?
Eine einfache Suche per FOR-Schleife ist schnell implementiert. Versuche es einfach mal und poste wieder, wenn es Schwierigkeiten gibt.
Gruß, Jan
|
|
|
Einspritzvorgang |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.11.2012, 14:41
Titel:
|
 |
mit ähnlich meine ich beim Radius (1. Spalte) eine Abweichung von +-2 und bei den Koordinaten (Spalte 2&3) eine Abweichung von +-10.
Was meinst du mit Suche? gibt es einen Befehl, mit dem man zwei Zeilen miteinander vergleich kann?
Dank und Gruß
Der Einspritzvorgang
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.11.2012, 15:06
Titel:
|
 |
Hallo,
hier ein Vorschlag:
Viele Zeilen aus der ersten Matrix werden so aber nicht in der zweiten gefunden, nämlich 9.
Grüße,
Harald
|
|
|
Einspritzvorgang |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.11.2012, 17:48
Titel:
|
 |
Lieber Harald, der Code hilft mir sehr weiter. Habe ihn eingebaut und er funktioniert optimal. VIEL VIEL DANK. DU BIST EINE SEHR GROßE HILFE.
Mit einer einfachen Multiplikation komme ich dann auf 2-Spaltigen Vektor der die gefunden Koordinaten enthält:
Allerdings würde ich auch gerne an die Koordinaten aus m2 kommen, die den gefunden entsprechen. Letztendlich will ich nämlich die Distanz messen und in einem Bild darstellen....
Hast du eine idee?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.11.2012, 18:02
Titel:
|
 |
Hallo,
das heißt, du musst die Zeile "drinnen(I) =..." anpassen.
Willst du jede annähernd passende Zeile oder nur die beste passende Zeile in der anderen Matrix haben? Falls letzteres: wie willst du messen, welche Zeile besser ist? Dir scheint ja der Unterschied in den Koordinaten weniger wichtig zu sein als im Radius.
Grüße,
Harald
|
|
|
Einspritzvorgang |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2012, 13:13
Titel:
|
 |
Ich möchte nur die best passende Zeile (optimal wär es, wenn die Veränderung der Koordinaten von m1 zu m2 auch positiv ist).
das könnte man vielleicht erreichen, wenn man das "abs" für die Koordinatendifferenz wegläst und in der "drinnen(I)" einbaut, dass die Koordinatendifferenzen postiv oder Null sein müssen....
letztendlich will ich die distanzen von erkannten Kreisen zwischen zwei kurz hintereinander aufgenommen bildern berrechnen:
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.11.2012, 23:00
Titel:
|
 |
Hallo,
das sollte mit kleinen Anpassungen im Code möglich sein.
Eine wichtige Frage: wie definierst du die Distanzen zwischen Kreisen? Der Abstand zwischen den Punkten, die am wenigsten weit voneinander entfernt sind? Abstand der Mittelpunkte? Wie kommt dann Radius ins Spiel?
Grüße,
Harald
|
|
|
Einspritzvorgang |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.11.2012, 12:17
Titel:
|
 |
Als Distanz möchte ich die Abstände der Mittelpunkte berechnen. Den Radius habe ich nur benutzt, um den zugehörigen Kreis auf dem zweiten Bild zu indentifizieren. Er ist für die Berechnung der Distanz nicht relevant.
Gruß und Dank
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|