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

Find()-Funktion macht Ärger

 

AndiBar
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.11.2009, 18:27     Titel: Find()-Funktion macht Ärger
  Antworten mit Zitat      
Hallo zusammen. erster Post, erste Frage :)

kurz der Hintergrund: Bildverarbeitung; ich habe eine split&merge-Funktion als Quadtree gebaut, die Bildblöcke stumpf als Quadrantenzahlen codiert.

1|2
---- sei jetzt mal ein Bild, in vier Quadranten gesplittet
3|4

Die Blöcke sind jeweils mit ihrem Farbwert in einer zweizeiligen Matrix gespeichert. Oben Blöcke, unten ihre Bildwerte.

ein Bildblock könnte also 132 heißen, oder 1124432, je nach split-ebene. In einem Schritt der Bearbeitung möchte ich nun bestimmte Blöcke/Blockgruppen, die extrahiert wurden, in der ursprünglichen Matrix finden, um ihren Farbwert auszulesen. Das mache ich mit
Code:
b = find(QT(1,:)== Block)
, wobei "QT(1,:)" die erste Zeile der Quadtreematrix ist und "Block" der gesuchte Block.

Problem:

Das klappt soweit gut, jedoch spinnt/versagt find() bei Block "323" in meinem Tesbild völlig. Sucht er nach der Variablen "Block", belegt mit 323, gibt er 'leere Matrix' zurück, gebe ich die "323" händisch in den find()-Befehl gibt er den korrekten Index an. Jede Variable, gefüllt mit dieser Zahl, wird nicht gefunden.

ich habe bei einer Suche im Netz diesen Thread in einem Forum gefunden, wo der Ersteller ein ähnliches Problem hat. Bei ihm lag die Lösung in der Genauigkeit der Nachkommastellen, ich hab jedoch einfach nur ganze Zahlen (allerdings im standardformat double).

Bin diesbezüglich etwas ratlos, denke auch schon an andere Lösungswege, aber das Problem ist doch rätselhaft genug, dass mich eine Lösung sehr interessiert. Er nimmt und findet jeden anderen BLock, ob als variable oder händisch eingegeben, bei 323 nimmt ers aber nicht als variable. Schon schräg.

Wäre für Ideen sehr dankbar :)

Frohen Advent,
Andi
Private Nachricht senden Benutzer-Profile anzeigen


Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 26.11.2009, 18:43     Titel:
  Antworten mit Zitat      
Probier mal die doubles in int bzw. uint zu casten, bzw. die 'Block'-Werte mit round zu runden.
Private Nachricht senden Benutzer-Profile anzeigen
 
AndiBar
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2009, 02:09     Titel:
  Antworten mit Zitat      
Am Round wirds tatsächlich liegen. Ich hab das in einem anderen Zusammenhang getestet (doppelte Blöcke per unique rausnehmen klappt nicht), gerundet läufts.

Danke für den Hinweis! Wobei mich die Ursache nach wie vor vor Rätsel stellt, da ich immer nur mit ganzen Zahlen arbeite. Irgendwo muss da wohl was im Compiler/der Verarbeitung dran drehen.

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