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

Matrix Nachbarn addieren

 

matlabfisch
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2016, 19:48     Titel: Matrix Nachbarn addieren
  Antworten mit Zitat      
Guten Abend,

wie kann ich für eine gegebene mxn-Matrix die 8 Nachbarn eines Eintrags addieren?

Die Matrix A soll dabei nur aus 0,1 bestehen und heraus kommen soll eine Matrix B die Nebenbedingungen der Summe der Nachbarn eines Eintrags erfüllt.

Danke für die Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

die Frage ist mir nicht ganz klar, insbesondere
Zitat:
eine Matrix B die Nebenbedingungen der Summe der Nachbarn eines Eintrags erfüllt.
aber es klingt nach filter2 .

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2016, 20:00     Titel:
  Antworten mit Zitat      
Okay ich versuche es nochmal genauer zu beschreiben. Wir arbeiten mit Matlab falls das nicht klar war.

A ist eine (mxn)-Matrix mit 1,0 als Einträge.

Dann brauche ich ein Programm, dass A in eine Matrix B transformiert.

B soll auch nur aus 1,0 bestehen und ein Eintrag B(i,j) ist 1 falls:

A(i,j)=1 und genau zwei Nachbarn von A(i,j)=1

oder

unabhängig von A(i,j) genau drei Nachbarn den Wert 1 haben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2016, 20:39     Titel:
  Antworten mit Zitat      
Hallo,

das Hauptproblem dürfte ja sein, die Anzahl der 1-Nachbarn zu finden. Das sollte sich eben mit filter2 lösen lassen mit Maske:
Code:
M = ones(3,3); M(2,2) = 0;


Grüße,
Harald

P.S.: Klingt nach Game of Life?
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabfisch
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2016, 20:44     Titel:
  Antworten mit Zitat      
Ha wenn es nur das Problem wäre, das ist unser zweiter Tag mit Matlab und ich bin arg überfordert. Programmiererfahrung habe ich auch absolut keine.

Die Idee die ich bei den anderen so mitbekommen habe wäre es die Matrix A immer zu verschieben, d.h eine Nullzeile erzeugen und hinterher zu überlagern so, dass alle Nachbarn und A(i,j) in der entstandenen Matrix aufaddiert werden und man dann quasi ablesen kann wieviele Nachbarn von A(i,j) 1 bzw 0 waren.

Aber das bekomme ich halt einmal so gar nicht auf die Reihe.

Hatte mir auch selber etwas ähnliches, aber umständlicheres überlegt.

Also das Prinzip ist mir klar, nur die Umsetzung eben in Code gelingt mir einfach gar nicht aufgrund der mangelnden Praxis.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2016, 21:26     Titel:
  Antworten mit Zitat      
Hallo,

mit filter2 kannst du dir das sparen.

Code:
A = round(rand(20));

M = ones(3,3); M(2,2) = 0;
numNeighbors = filter2(M, A);

B = (A == 1 & numNeighbors == 2) | numNeighbors == 3;


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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2016, 21:28     Titel:
  Antworten mit Zitat      
Vielen Dank Harald, ich werde damit etwas rum basteln.
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.