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

Zwei verknüpfte Matrizen zu einer umwandeln

 

Ence
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 06.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2019, 14:45     Titel: Zwei verknüpfte Matrizen zu einer umwandeln
  Antworten mit Zitat      
Hallo miteinandern!


Ich habe zwei 7x2 Matrizen die ich in eine 6x1 Matrix umbauen möchte. In meiner Matrix A sind Zahlenwerte zwischen 1 und 6. In meiner Matrix B sind beliebige Zahlenwerte. Die Elemente beider Matrizen hängen zusammen, sprich z.b. jede 1 in Matrix A ist gleich 280.42 aus Matrix B.

A = [
1 2
1 2
2 3
2 3
3 4
4 5
5 6
]

B = [
280.42 280.18
280.42 280.18
280.18 280.82
280.18 280.82
280.82 280.57
280.60 280.75
280.75 280.20
]


Ich möchte nun eine 6x1 Matrix C haben, welche z.B. in Zeile 1 die Zahlenwerte der Matrix B ausgibt, welche in Matrix A den Wert 1 hatten. Analog dazu in Zeile 2 die Zahlenwerte der Matrix B, welche in Matrix A den Wert 2 hatten. Im Endeffekt soll Matrix C also so aussehen:

C = [
280.42
280.18
280.82
280.57
280.75
280.20
]

Ich hoffe, jemand kann mir dabei helfen.
Danke und viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

zunächst ist es egal, in welcher Spalte die Werte stehen, oder? Dann würde ich direkt mit Vektoren arbeiten (reshape).
Dann kannst du unique mit 2 Rückgabeargumenten aufrufen, um das erste Vorkommen jeder Zahl in A zu bekommen. Das verwendest du dann als Index auf B.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Ence
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 06.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2019, 08:17     Titel:
  Antworten mit Zitat      
Hey,
erstmal Danke für die flotte Antwort.
Im Grunde ist egal in welcher Spalte die Werte stehen, ja.
Mit unique habe ich es schon probiert, das funktioniert leider nicht. In dem Fall würde es jetzt natürlich klappen, aber das gesamte läuft in eine Schleife (um die 6000 Durchläufe) ab mit nicht nur 7 bzw. 6 Werten sondern um die 5000. Dann kann es ja durchaus sein, dass in meiner Matrix B z.B. dreimal 280.42 steht. Zweimal davon bezieht es sich dann auf die 1 in Matrix A, und das dritte mal dann z.B. auf 6 aus Matrix A. Durch unique würde ich ja dann das dritte ignorieren, weil es den gleichen Zahlenwert hat wie die Werte für 1. Im Endeffekt hätte ich ja dann nur eine 5x1 Matrix und der Wert für 6 ist verschwunden.
Viele Grüße

[EDITED, Jan, Bitte nicht die gesamte vorhergehende Nachricht zitieren - Danke!]

Zuletzt bearbeitet von Ence am 07.07.2019, 09:49, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Mit unique habe ich es schon probiert, das funktioniert leider nicht.

Bitte genau sagen, was du mit dem Befehl versucht hast und was daran nicht funktioniert hat.

Zitat:
In dem Fall würde es jetzt natürlich klappen, aber das gesamte läuft in eine Schleife (um die 6000 Durchläufe) ab mit nicht nur 7 bzw. 6 Werten sondern um die 5000. Irgendwann habe ich dann zwangsläufig Überschneidungen bei den Werten aus Matrix B und komme mit unique nicht mehr weiter.

Das verstehe ich nicht. Insbesondere: was meinst du hier mit Überschneidungen?
Am besten ein Beispiel angeben, in dem dieses Problem erfasst ist.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.07.2019, 11:13     Titel: Re: Zwei verknüpfte Matrizen zu einer umwandeln
  Antworten mit Zitat      
Hallo Ence,

Vielleicht meinst du dies:

Code:
A = [ 1     2; ...
          1     2 ; ...
          2     3; ...
          2     3; ...
          3     4; ...
          4     5; ...
          5     6];

B = [  280.42    280.18; ...
          280.42    280.18; ...
          280.18    280.82; ...
          280.18    280.82; ...
          280.82    280.57; ...
          280.60    280.75; ...
          280.75    280.20 ];

[uniqA, iA] = unique(A(:));
C(uniqA) = B(iA);
% Oder:
C = B(iA);


Gruß, Jan
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.