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

schleife programmieren

 

Marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 12:09     Titel: schleife programmieren
  Antworten mit Zitat      
Hallo Leute,

habe meinen Code in folgender Form:

m=2033 %gesamtpunkte
p=4 %p=spalte in X in der die klasse steht


for n=m:-1:1; %erstellen von punktlisten für einzelne cluster
if X(n,p)==1;



a1(n,1)=X(n,2);
b1(n,1)=X(n,3);
end
end


for n=m:-1:1; %erstellen von punktlisten für einzelne cluster
if X(n,p)==2;



a2(n,1)=X(n,1) ;
b2(n,1)=X(n,2);
end
end


for n=m:-1:1; %erstellen von punktlisten für einzelne cluster
if X(n,p)==3;



a3(n,1)=X(n,1) ;
b3(n,1)=X(n,2);
end
end

plot(a1,b1,'.') %plotten der punktklassen
hold on
plot(a2,b2,'.','color','g')
plot(a3,b3,'.','color','k')

----------------------------------------------------

X ist eine Tabelle mit Koordinaten in den ersten 3 spalten (x,y,höhe) in der vierten spalte steht eine Klasse. Mehrere Punkte gehören zu einer Klasse. Das Ziel ist die Punkte die zur gleichen Klasse gehören, eine gleiche Farbe zu geben und sie graphisch darzustellen.

Das funktioniert so auch. Nur würde ich das gerne in eine Schleife packen, so dass ich nciht wie hier für jede Klasse eine neue Schleife schreiben muss. Am Ende werde ich dutzende Klassen haben. a1 und b1 so wie die klasse sollen automatisch bis unendlich hochgezählt werden.
für jedes ab-pärchen soll dann automatisch ein plot mit jeweils einer anderen Farbe erstellt werden.

KANN MIR DA JEMAND HELFEN?

Viele Grüße und Dank im Voraus
Marc


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 21:54     Titel:
  Antworten mit Zitat      
Hallo,

falls ich Dich richtig verstanden habe suchst Du so etwas?

Code:

data = [rand(100,3),randi(4,100,1)];  % Testdaten erzeugen
figure
hold all
for k = 1:4
    idx = data(:,4) == k;
    plot(data(idx,1),data(idx,2),'*')
end
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2010, 13:55     Titel:
  Antworten mit Zitat      
Hallo LittleX,

das sieht schonmal super aus, danke!

Jetzt bräuchte ich nurnoch Tabellen, in denen die Daten (x,y,z) der Punkte stehen, die zu einer Klasse (k) gehören. Am besten fortlaufen nummeriert a(k)-a(k+1). Möchte später innerhalb der klassen noch operationen durchführen. Gibt es dann auch eine Funktion über die ich mit jeder der Klassen(tabellen) die selbe Operation durchführen kann?
Viele Grüsse

Marc
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2010, 14:04     Titel:
  Antworten mit Zitat      
Hallo,

Du könntest die Daten als cell array Speicher:

Code:


data = [rand(100,3),randi(4,100,1)];  % Testdaten erzeugen
figure
hold all
C = cell(1,4);  
for k = 1:4
    idx = data(:,4) == k;
    C{k} = data(idx,1:3); % x, y, z Werte speichern
    plot(data(idx,1),data(idx,2),'*')
end

 


Achte darauf, dass beim Indizieren in eine Zelle {} den Inhalt zurückgeben und () eine Teilzelle (Datentyp cell).

Entweder Du arbeitest das cell array in einer Schleife ab oder aber Du schaust dir cellfun an.

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2010, 11:49     Titel:
  Antworten mit Zitat      
Hallo,

Wie kann ich die Punktgruppen aus C einzeln plotten?
Dank und Gruß

Marc
 
marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2010, 14:21     Titel:
  Antworten mit Zitat      
marc hat Folgendes geschrieben:
Hallo,

Wie kann ich die Punktgruppen aus C einzeln plotten?
Dank und Gruß

Marc


...hat sich erledigt...
 
marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2010, 14:57     Titel:
  Antworten mit Zitat      
Hallo zusammen,

die Daten, die in jedem Cluster stehen sind ja in C{k} gespeichert und werden in der Schleife in jeweils verschiedenen Zufallsfarben markiert geplottet.

Das Problem ist nun, dass zwei Cluster die direkt nebeneinander liegen oft die gleiche Farbe haben und ich sie im Plot nichtmehr auseinanderhalten kann. Gibt es eine Möglichkeit um das Punktcluster herum ein Polygon zu plotten, oder etwas anderes, damit ich die Cluster auseinanderhalten kann?

Gruß
Marc
 
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.