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

Inhalt eines Rasters zählen

 

Logi87
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 06.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2012, 01:09     Titel: Inhalt eines Rasters zählen
  Antworten mit Zitat      
Hallo,

wieder mal ein Problem Wink

Ich habe Punkte in eine Ebene projeziert und möchte jetzt meine Ebene "rastern" um zu zählen wie viele Punkte welchem Rasterfeld liegen.

Die Punkte liegen als Matrix mit 2 Spalten als Double vor.
Den Rasterursprung habe ich dorthin gesetzt wo die x und y Werte ihr Minimum annehmen.

Ich möchte immer 4 Punkte für jedes Rasterfeld haben um über eine Polygongleichung rauszubekommen ob ein Punkt innerhalb oder ausserhalb dessen liegt.

Das habe ich jetzt auch irgendwie geschafft Wink

Gibt es eine Grundfunktion im Matlab die mir raussucht in welchem Viereck ein Punkt liegt?

Ich würde jetzt einfach durchprobieren aber das ist bei mehreren 1000 Punkten auch sehr aufwändig.

Hoffe ich konnte das Problem richtig ausformulieren


Also als Ziel erwarte ich mir sowas in der Art wie eine Matrix wo ich für jedes Element (i-Zeile, j-Spalte) die Anzahl des entsprechenden Inhaltswertes habe.
Private Nachricht senden Benutzer-Profile anzeigen


Logi87
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 06.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2012, 14:39     Titel:
  Antworten mit Zitat      
So also ich habe es nun hinbekommen. Zumindest fast.

Mit der Funktion inpolygon.

Sieht wie folgt aus.

[proj] ist das Punktset was ich überprüfen möchte
[A] ist die matrix mit den Grenzpunkten der Rasterpolygone

Code:
[p_pro q_pro] = size(proj)
[p_A q_A] = size(A)

for Poly = 1 : p_A
   
    X1 = A(Poly,1);    Y1 = A(Poly,2);
    X2 = A(Poly,3);    Y2 = A(Poly,4);    
    X3 = A(Poly,5);    Y3 = A(Poly,6);
    X4 = A(Poly,7);    Y4 = A(Poly,8);
   
    X = [X1; X2; X3; X4];
    Y = [Y1; Y2; Y3; Y4];
    % Definition des Grenzpolygons
   
    p_zaehl = 0;

    for i = 1 : p_pro
   
        x = proj(i,1);
       y = proj(i,2);
        % Punkte die überprüft werden sollen
   
        [ In On ] = inpolygon(x,y, X, Y);

        if In == 1 || On == 1
            p_zaehl = p_zaehl + 1;
        end
       
    end
     
    Endmatrix(Poly,1) = Poly;
    Endmatrix(Poly,2) = p_zaehl;
   
end

size(Endmatrix);
sum(Endmatrix(:,2))

 


Komisch ist jetzt das die Gesamtzahl der Punkte 5944 sein sollte
aber die Summe der Spalte in der Ausgangsmatrix gerade mal 2966.
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.