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

Eine Größe soll nur einmal einen bestimmten werde erhalten

 

Einspritzvorgang

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 11:19     Titel: Eine Größe soll nur einmal einen bestimmten werde erhalten
  Antworten mit Zitat      
In der folgenden Schleife vergleiche ich zwei Matrizen (mB1 und mB2), welche eine Liste von Kreisen auf zwei kurz hintereinander aufgenommenen Fotos beschreiben. Dabei sind Spalte eins der Radius und Spalte 2 und 3 die Koordinaten. Ich will die Kreise auf Bild eins eindeutig den Kreisen auf Bild zwei zuordnen.

damit es eindeutig ist, darf die größe indexB (welche mir sagt in welcher zeile der zugehörige kreis auf bild 2 ist) nur einmal einen bestimmten Wert erhalten. Zum beispiel hat sie in meinem Beispiel zweimal die Größe 17. Wie kann ich das verhindern?

Code:
centersB2_gefunden = zeros(size(mB1,1),2);
centersB1_gefunden = zeros(size(mB1,1),2);
for A = 1:size(mB1)
    diffGefundenB = bsxfun(@minus, mB1(A,:), mB2(:,:));
    DistB = zeros(size(diffGefundenB,1),1);
       
            for A2 = 1:size(diffGefundenB)
               
               
                if abs(diffGefundenB(A2,1)) <= RV & diffGefundenB(A2,2) >= d_x_min & diffGefundenB(A2,3) >= 0 & diffGefundenB(A2,2) < d_x_max & diffGefundenB(A2,3) < d_y
               
                   DistB(A2) = sqrt(diffGefundenB(A2,2)^2+diffGefundenB(A2,3)^2);  
                end
            end
           
   
    nichtNull = nnz(DistB);
    if nichtNull > 0
        DistB(~DistB) = nan;
        [lowestDistB,indexB] = min(DistB);
   
        centersB2_gefunden(A,:)=mB2(indexB,2:3);
        centersB1_gefunden(A,:)=mB1(A,2:3);
    end
           
end


madlab
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 86
Anmeldedatum: 15.05.12
Wohnort: Freiburg
Version: 7.11 (R2010b)
     Beitrag Verfasst am: 20.11.2012, 11:29     Titel:
  Antworten mit Zitat      
Hi Einspritzvorgang,

ich habe mir dein Problem nicht genau verstanden, aber deiner Beschreibung zu Folge hilft dir eventuell der Befehl UNIQUE weiter. Er kann dir aus einem Eingansvektor einen Ausgangsvektorerzeugen, der alle vorkommenden Werte nur noch einmal enthält, er entfernt also im prinzip doppelte Werte.

Grüße,

Mad
Private Nachricht senden Benutzer-Profile anzeigen
 
Einspritzvorgang

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 11:51     Titel:
  Antworten mit Zitat      
Es dreht sich leider nicht um ein Array, sondern um ein einzelnen Wert, der sich in der Schleife jedes mal ändert. Ich möchte das der Wert indexB nur jeweils einmal einen bestimmten Wert animmt. ER soll zum Bsp. nicht mehrmals gleich 4 sein....
 
madlab
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 86
Anmeldedatum: 15.05.12
Wohnort: Freiburg
Version: 7.11 (R2010b)
     Beitrag Verfasst am: 21.11.2012, 10:54     Titel:
  Antworten mit Zitat      
Ist dir der Wert, welcher nicht zweimal vorkommen darf vorher bekannt?
Dann könntest du ja im Prinzip zu deiner if-Abfrage eine Bedingung anhängen mit der abfrage ob es diesen Wert schon gab. Dazu müsstest du natürlich noch innerhalb der schleife eine Tabelle anlegen, die bei jedem durchlauf den aktuellen Wert von indexB eingetragen bekommt.
In deiner If-Abfrage kannst du dann die Tabelle auf diesen Wert überprüfen. Könnte so funktionieren. Kann aber sein das ich dein Problem immernoch missverstehe Razz

Grüße,

Mad
Private Nachricht senden Benutzer-Profile anzeigen
 
Einspritzvorgang

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2012, 10:58     Titel:
  Antworten mit Zitat      
Nein, nein, du verstehst sie sehr gut. Dein Vorschlag klingt sehr gut. VIELEN DANK! werde mich sofort daran setzen, ihn mal auszuprobieren.

Gruß
 
madlab
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 86
Anmeldedatum: 15.05.12
Wohnort: Freiburg
Version: 7.11 (R2010b)
     Beitrag Verfasst am: 21.11.2012, 13:49     Titel:
  Antworten mit Zitat      
zum überprüfen ob elemente in einer tabelle vorhanden sind, kann dir evtl. "any" weiterhelfen: http://www.mathworks.de/help/matlab.....21a45c0450c7b81641c2a328d

viel glück Wink
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.