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

Matrizen miteinander UND-Verknpüfen

 

raptus93
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 14.10.13
Wohnort: nrw
Version: ---
     Beitrag Verfasst am: 29.09.2014, 14:22     Titel: Matrizen miteinander UND-Verknpüfen
  Antworten mit Zitat      
Hallo Community!

Ich will zwei Matrix Ebenen miteinander UND-Verknüpfen (Werte sind nur 0 oder 1), kriege das aber nicht hin! Hier mein Versuch:

A(:,:,1) = A(:,:,1) & B(:,:,1);
A und B haben in den ersten beiden Dimensionen immer die gleiche Ausdehnung.
Ich weiß aber nicht, ob es irgendwie an meinem Datentypen liegen könnte, bzw wie ich es löse?

MfG, raptus
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: 29.09.2014, 14:29     Titel:
  Antworten mit Zitat      
Hallo,

welchen Datentyp haben A und B denn?
Was klappt an deinem Versuch nicht?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 14.10.13
Wohnort: nrw
Version: ---
     Beitrag Verfasst am: 29.09.2014, 14:32     Titel:
  Antworten mit Zitat      
Ich denke der Typ ist numerisch (ist das ein Datentyp in Matlab, oder nur ein Oberbegriff für uint8, double, etc?) Es klappt nicht, in dem Sinne, dass alle Werte 0 werden, obwohl mit Sicherheit 1-er überschneidungen vorliegen.
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: 29.09.2014, 14:38     Titel:
  Antworten mit Zitat      
Hallo,

"denken" klingt nicht sehr sicher. Was gibt denn
Code:

zurück?

In einfachen Fällen klappt es ja zumindest:
Code:
[1 0 1] & [1 0 0]


Kannst du ein konkretes Beispiel zur Verfügung stellen, in dem es nicht klappt?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 14.10.13
Wohnort: nrw
Version: ---
     Beitrag Verfasst am: 29.09.2014, 14:57     Titel:
  Antworten mit Zitat      
Gibt double zurück, danke, ich habe nicht gefunden, wie man es abfragt.
Das konkrete Beispiel reinzustellen ist etwas komplexer, da mir viele Variablen von externen Funktionen zurückgegeben werden etc., ich versuchs mal in Worten zu beschreiben:
Ich habe eine Matrix (zB a = zeros(2,3,4)) und fülle sie mit einem vertikalen Streifenmuster mittels image(adresse) = 1;
Dann mache ich noch ein horizontales Streifenmuster auf die gleiche Art und weise.
Diese zwei Streifenmuster haben die gleichen dimensionen und wollen miteinander und verknüpgt werden (um nur die Punkte zu finden, die von beiden Streifen getroffen werden.)

Danke schonmal!
Private Nachricht senden Benutzer-Profile anzeigen
 
raptus93
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 14.10.13
Wohnort: nrw
Version: ---
     Beitrag Verfasst am: 29.09.2014, 15:00     Titel:
  Antworten mit Zitat      
Ich denke die Frage lautet mittlerweile:
Geht eine UND-Verknüpfung auch mit non-logical, sondern Matrizen vom Typ double?
Oder sollte ich mir da lieber selbst ein Stückchen code zu schreiben, um das zu lösen?

Gruß!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 29.09.2014, 15:21     Titel:
  Antworten mit Zitat      
Hallo,

als kleiner Workaround: Du kannst auch die Summen der beiden Ebenen bilden und und prüfen, ob die Summe 2 ergibt:
Code:
A = rand(2,3,4) > 0.2;
B = rand(2,3,4) > 0.2;

% Deine Variante:
C = zeros(size(A));
C(:,:,1) = (A(:,:,1) & B(:,:,1));

% Mit Summe
D = zeros(size(A));
D(:,:,1) = (A(:,:,1) + B(:,:,1)) == 2;


Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
raptus93
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 14.10.13
Wohnort: nrw
Version: ---
     Beitrag Verfasst am: 29.09.2014, 15:46     Titel:
  Antworten mit Zitat      
Das ist auch ziemlich klug, ich hab es jetzt so gemacht:

Code:

function [ conjunct ] = conjunct( A, B )

sizeA = size(A)
conjunct = zeros(sizeA(1),sizeA(2));
%condition: A and B have the same size
if(size(A) == size(B))
    %iteration through all rows
    for i=1:sizeA(1)
        %iteration trough all cloumns
        for j=1:sizeA(2)
            if(A(i,j) && B(i,j) == 1)
                conjunct(i,j) = 1;
            else
                conjunct(i,j) = 0;
            end
        end
    end
end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
raptus93
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 14.10.13
Wohnort: nrw
Version: ---
     Beitrag Verfasst am: 29.09.2014, 15:47     Titel:
  Antworten mit Zitat      
Und natürlich noch: vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 29.09.2014, 16:20     Titel:
  Antworten mit Zitat      
Hallo,

wie wär's mit
Code:
conjunct = (A+B) == 2

Auf den ersten Blick sollte das doch das gleiche liefern.

P.S. sind A und B nun zweidimensional oder dreidimensional?
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 - 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.