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

Vektor aus Matrix finden?

 

PiBi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2011, 18:24     Titel: Vektor aus Matrix finden?
  Antworten mit Zitat      
Hallo ihr,

ich möchte aus einer Matrix die Position eines bestimmten Vektors lesen, nur funktionieren bei mir die herkömmlichen Methoden irgendwie nicht.

Folgendes habe ich versucht:

Code:

A=[2,1;2,2;1,1];
K2=[2,2];

[r,c]=find(isequal(K2,A(:,1:2)))
[r,c]=find(isequal(K2,[A(:,1),A(:,2)]))
[r c]=find(isequal([A(:,1),A(:,2)],[K2(1,1),K2(1,2)]))
 



Das Ergebnis war immer
Code:
r =

     []


c =

     []
 

, dabei befindet sich der Vektor ja in Zeile 2 der Matrix.

Code:
>> [r,c]=find((A(:,1)==K2(1,1) && A(:,2)==K2(1,2)))

hat folgendes ergeben:
??? Operands to the || and && operators must be convertible to logical scalar values.

Was mache ich falsch und vor allem: wie bekomme ich die richtige Lösung?

Vielen Dank für eure Hilfe!!


MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2011, 19:07     Titel:
  Antworten mit Zitat      
Hi,

Code:
idx=find(ismember(A,K2,'rows'))
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: 20.08.2011, 19:38     Titel: Re: Vektor aus Matrix finden?
  Antworten mit Zitat      
Hallo PiBi,

Code:

A=[2,1;2,2;1,1];
K2=[2,2];
[r,c]=find(isequal(K2,A(:,1:2)))   % Funktioniert nicht.

% Dann zerlege den Code:
isequal(K2,A(:,1:2))
% >> 0  !!!

ISEQUAL testet, ob beide Ausdrucke einen identischen Inhalt haben. Ohne Zweifel is aber K2 und A(:, 1:2) unterschiedliche, also gibt ISEQUAL den Wert FALSE zurück.
Das vorgeschlagene ISMEMBER macht wahrscheinlich, was Du brauchst.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
PiBi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2011, 12:42     Titel:
  Antworten mit Zitat      
Vielen Dank an euch! Ihr habt mir sehr geholfen!

Da die Methode mit isequal() bei mir bei einem anderen, aber ähnlichem Beispiel funktioniert hat, wundert es mich schon, dass es hier nicht funktioniert, und vor allem, dass K2 und die gesuchte Zeile von A(:, 1:2) unterschiedlichen Inhalt haben sollen.
Ismember () funktioniert jedenfalls, vielen Dank für eure Hilfe!!
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.08.2011, 13:48     Titel:
  Antworten mit Zitat      
Hallo PiBi,

Zitat:
... wundert es mich schon, dass es hier nicht funktioniert, und vor allem, dass K2 und die gesuchte Zeile von A(:, 1:2) unterschiedlichen Inhalt haben sollen.

Wenn Du Dich wunderst, schau dir doch die Werte einfach mal an:
Code:
A = [2,1;2,2;1,1];
K2 = [2,2];
disp(K2)
%  [2, 2]
disp(A(:, 1:2)
% [2, 1; 2, 2]

K2 ist ein [1 x 2] Vektor, aber A(:,1:2) ist eine [2 x 2] Matrix. Ich finde es nicht verwunderlich, dass die beiden nicht identischen Inhalt haben - es sind ja nicht mal die Anzahl der Elemente gleich! Vermutlich macht ISEQUAL etwas anderes, als Du vermutest. Siehe "help isequal".

Schön, dass ich Dir helfen konnte.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
PiBi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2011, 13:55     Titel:
  Antworten mit Zitat      
Jetzt seh ich meinen Denkfehler! Danke, Jan, dass du dir nochmal die Zeit genommen hast, mir das zu erklären! Ich habs jetzt verstanden! =)
 
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 - 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.