|
|
Zeilen in einer Matrix Zuordnen |
|
MarieB |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.02.2017, 18:02
Titel: Zeilen in einer Matrix Zuordnen
|
|
|
|
|
Hallo liebe Community,
ich bin leider noch eine blute Matlab Anfängerin und habe ein Problem.. ich habe schon einen ähnlichen Beitrag zu meinem Problem gefunden nur leider schaffe ich es nicht wirklich mein problem darauf zu abstrahieren.. :/
Ich habe zwei Matritzen A und B, beide mit drei Spalten.
Spalte 1 - ID fortlaufend 1 bis .... n
Spalte 2 - x Koordinate
Spalte 3 - y Koordinate
...x,y sind quasi immer Punkte
Ich möchte jeweils die Zeilen(nummern) in Matrix B finden wo der Abstand zu einem Punkt kleiner oder gleich r ist.
Im Ergebnis hätte ich gern eine Matrix die in Worten formuliert so aussieht:
Die Zeile n der Matrix A gehört zu Zeile m der Matrix B
Gern kann auch in den Spalten der Matrix die ensprechenden Koordinaten auftauchen.
Falls es für eine bestimmte Zeile in der Matrix B keinen Treffer in Matrix A gibt soll in der entsprechenden Zeile der Matrix A für die es keinen Treffer gibt "kein Treffer" oder so stehen. Für den Fall, dass es mehrere Punkte der Matrix B gibt für den die Abstandsbedingung passt sollen alle diese Zeilennummern hinter der jeweiligen Zeile in Matrix A auftauchen.
quasi in Worten:
Die Zeile n der Matrix passt zu Zeile m1,m2,.. der Matrix B
Danke für die Hilfe falls mein Problem nicht ganz klar ist könnt ihr gern immer fragen.
Liebe Grüße,
Marie
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 22.02.2017, 19:26
Titel:
|
|
Hallo,
die Frage kommt mir in der Tat bekannt vor.
Wenn du einen ähnlichen Beitrag gefunden hast, dann verlinke ihn doch bitte - dann brauchen wir nicht zu suchen.
Bitte poste auch was du versucht hast, um das auf deinen Fall anzupassen.
Dann wäre noch interessant, welche MATLAB-Version du verwendest.
Grüße,
Harald
|
|
|
MarieB |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.02.2017, 20:16
Titel:
|
|
In diesem Beitrag:
http://www.gomatlab.de/viewtopic,p,172903.html#172903
ich nutze Octave und kein Matlab.. ich hoffe das stellt kein großes Problem dar.
Ich würde es kurz an folgeden Beispiel fest machen:
Matrix A:
[1 , 1.0, 1.0;
2 , 2.0, 2.0;
3, 3.0, 3.0;
4 4.0, 4.0;
5 5.0,5.0
6 6.0, 6.0 ]
Matrix B:
[1 , 2.1 , 2.2;
2, 1.1, 1.2 ;
3 3.05, 3.05;
4 3.1, 3.15;
5 6.1, 6.1 ]
Wenn ich jetzt die Bedingung festlegen würde: d [math]\leq[\math] 1.
Soll am Ende rauskommen:
E= [
1 , 1.0, 1.0 , 2 (*) ;
2, 2.0 , 2.0, 1 ;
3, 3.0, 3.0, 3,4 (**) ;
4, 4.0, 4.0, "kein Treffer" ;
5, 5.0, 5.0 "kein Treffer";
6, 6.0, 6.0, 5 ; ]
_____
Spalte 1: ID's der Matrix A
Spalte 2: x-Koordinate Matrix A (vgl. Spalte 2 Matrix A)
Spalte 3: y-Koordinate Matrix A (vgl. Spalte 3 Matrix A)
Spalte 4: Zeilennummern von B wo Abstandsbedingung erfüllt ist
* = Zeilennummer des Treffers
** = Zeilennummern der Treffer
Viele Grüße,
Marie
|
|
|
MarieB |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.02.2017, 20:17
Titel:
|
|
okay, das mit dem kleinergleich hat nicht ganz geklappt:
Bed: d kleiner gleich 1
Bedingung möchte ich in der Späteren Anwendung varrieren
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 22.02.2017, 21:37
Titel:
|
|
Hallo,
Zitat: |
ich nutze Octave und kein Matlab.. ich hoffe das stellt kein großes Problem dar. |
Ich nutze ausschließlich MATLAB und kann daher nicht beurteilen, welche Funktionalität Octave bietet
Was hast du denn nun bis jetzt versucht?
Wie man die Abstände zwischen Zeilen berechnet, geht ja aus dem anderen Beitrag hervor. Dann kannst du überprüfen, welche Abstände < r sind, und diese Information per logischer Indizierung extrahieren. Zumindest in MATLAB.
Grüße,
Harald
|
|
|
MarieB |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.02.2017, 11:49
Titel:
|
|
Octave bietet weitestgehend die selben Funktionen wie Matlab (zumindest wenn die Aufgaben nicht allzu tiefgreifend und spezifisch werden), auch die Syntax ist eigentlich zum Großteil gleich.
Zunächst habe ich ebenfalls überlegt wie man zunächst alle Distanzen berechnen könnte, dabei bin ich ebenfalls zu dem Ansatz
gekommen.
ich habe dann an eine if Schleife gedachte mit der Bedingung: dists < r
Wie ich die Anweisung zur Extrahierung in Code umsetzen soll ist mir leider nicht klar.
Weiterhin habe ich an eine elseif-Anweisung gedacht.. für die Punkte die keinen Treffern finden.
Wie ich es mache das mehere Punktnummern in der vierten Spalte auftauchen (für den Fall mehrerer Treffer) habe ich leider noch garkeine richtige Idee.
Vielen Dank bereits jetzt das du dich meinen Problem annimmst
Marie
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.02.2017, 12:21
Titel:
|
|
Hallo,
if brauchst du nicht:
erzeugt die logische Matrix schon.
Diese kannst du zeilenweise durchgehen und für jede Zeile von A mit find schauen, welche Zeilen von B passen.
Grüße,
Harald
|
|
|
MarieB |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.02.2017, 12:34
Titel:
|
|
sieht erstmal gut, aus zumindest kann man daraus schon eine logische zuordnung erkennen wenn man genau hinsieht
mit: "Diese kannst du zeilenweise durchgehen und für jede Zeile von A mit find schauen, welche Zeilen von B passen." - weiß ich leider nicht genau wie du das meinst?
Viele Grüße Marie
|
|
|
|
|
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 - 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.
|
|