|
|
|
Untermatritzen finden und Null setzen |
|
| Dionysos |

Forum-Fortgeschrittener
|
 |
Beiträge: 64
|
 |
|
 |
Anmeldedatum: 16.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2011a
|
 |
|
|
 |
|
Verfasst am: 12.09.2011, 08:10
Titel: Untermatritzen finden und Null setzen
|
 |
| |
 |
|
Guten Morgen zusammen,
ich versuche schon paar Tage eine Untermatrix von einer großen Hauptmatrix Null zu setzen, aber bekomme immer den Fehler "Could not determine the size of this expression".
Insgesamt geht es um das Untersuchen von Bewegung in einem Bild, aber es scheitert an der Formulierung des Nullsetzens.
Ich habe eine 240x320 Matrix die ich mit einem 27x27 Fenster überprüfe (Blockmatching). Daraus bekomme ich eine 9x12 Matrix die mir die Pixelverschiebung des Fensters ausgibt. Jede einzelne Stelle der zweiten Matrix steht für ein 27x27 Fenster der großen Matrix. Ist nun eine Stelle kleiner als ein Schwellenwert, soll dieses Fenster in der Hauptmatrix zu 0 gesetzt werden.
Das Ganze erfolgt in einem Embedded File in Simulink.
Mein Script sieht wie folgt aus:
Danke schonmal fürs reindenken.
Falls jemand natürlich eine bessere Methode kennt, z.B. mit Simulink nehme ich diese auch gerne an.
Gruß
_________________
Dionysos
|
|
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 12.09.2011, 22:36
Titel: Re: Untermatritzen finden und Null setzen
|
 |
Hallo Dionysos,
Wenn ich Deinen Code in Matlab laufen lassen, erhalte ich keinen Fehler.
Gruß, Jan
|
|
|
|
| Dionysos |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 64
|
 |
|
 |
Anmeldedatum: 16.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2011a
|
 |
|
|
 |
|
Verfasst am: 13.09.2011, 13:45
Titel:
|
 |
Tatsächlich, nur wenn man ungeschickte Dimensionen wählt, sorry.
Jedoch macht der Code nicht das was er soll. Wie kann ich eine dynamische Untermatrix einer Hauptmatrix Null setzen lassen?
Bsp:
Die Suchmaske ist eine 5x2 Matrix, diese kann man also insgesamt 10mal nach rechts verschieben. Sobald der Inhalt der R Matrix kleiner als ein Schwellwert ist, soll die Maske ein Loch in die Hauptmatrix reißen.
Manuell würde das so aussehen:
Der Block "Overwrite Values" macht genau das, jedoch nicht dynamisch, deshalb unbrauchbar. Ich hoffe man vresteht was ich vorhabe.
_________________
Dionysos
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 13.09.2011, 14:20
Titel:
|
 |
Hallo Dionysos,
Ich verstehe Deine Frage nicht.
Im Beispiel-Code is R eine [2x5] Matrix.
Wieso ist die Suchmaske dann eine 5x2 Matrix?
Wie kann man die 10 mal nach rechts schieben? Ich würde erwarten, dass man eine 2x5 Matrix in einer 10x10 Matrix 9 mal nach rechts schieben kann.
Wie kann der Inhalt von R kleiner als ein Schwellenwert sein, wenn R doch eine Matrix ist? Welche Norm verwendest Du hierfür?
Was bedeutet "Falls der zweite Wert von R kleiner Schwellwert"? Welcher zweite Wert? R ist doch eine Matrix, oder?
Da ich nicht mit Simulink arbeite, habe ich da vielleicht ein Verständnisproblem. In Matlab sollte das Einfügen von Nullen aber genauso gehen, wie von Duir gezeigt, nur halt eben mit Variablen im Index.
Gruß, Jan
|
|
|
|
| Dionysos |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 64
|
 |
|
 |
Anmeldedatum: 16.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2011a
|
 |
|
|
 |
|
Verfasst am: 13.09.2011, 14:21
Titel:
|
 |
So, ich habe es nun hinbekommen, aber ist dies auch ohne for-Schleife möglich? Irgendwie geschickter, schneller? Dafür muss es doch irgendwelche Simulink Blöcke geben, oder etwa nicht?
Edit:
Mein Beispiel hat eine Suchmaske 5x2. Diese schiebt sich 9 mal (sorry) durch die 10x10 Matrix. Nehmen wir an sie würde als Ergebnis einen Mittelwert ausgeben, so hätte man als Ergebniswerte eine 2x5 Matrix. Diese dient dann als Schwellwert, dass die Suchmaske Nullen auf der 10x10 Matrix hinterlässt.
_________________
Dionysos
|
|
|
|
|
|
|
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 - 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.
|
|