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

Bildbestandteile auseinander sortieren

 

Martina

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2009, 09:24     Titel: Bildbestandteile auseinander sortieren
  Antworten mit Zitat      
Hallo,
ich habe eine Matrix A mit Punkten (x y). Sortiert ist die Matrix nach y.
Die Werte für x haben "Sprünge", ich habe versucht das mit fett schreiben hervorzuheben. So in etwa:

104 2
105 2
106 2
107 2
198 2
199 2

108 3
109 3
110 3
111 3
112 3
200 3
201 3
202 3
203 3

113 4
114 4
115 4
204 4
205 4
206 4
207 4

115 5
116 5
117 5
208 5
209 5

118 6
119 6
120 6
121 6
210 6
211 6
212 6


(Die Matrix hat über 3000 Zeilen. Ist nicht stetig monoton steigend, sondern hat auch Extrempunkte.)

Mein Ziel ist es, die Matrix in zwei Teilmatritzen zu zerteilen, wobei die Trennung immer an einem Sprung passiert.

Theoretisch sollte es doch mit hilfe von ein paar Schleifen möglich sein, diese Matrix in zwei Teilmatrizen zu trennen, in dem die Sprünge in der Reihe ausgewertet werden.
Aber ich finde keine Lösung dafür.

Könnte mir bitte jemand helfen?

Danke unf Grüße
Martina


Olli
Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 19.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2009, 11:07     Titel:
  Antworten mit Zitat      
Ich weiß nicht ob ich dein Problem genau verstanden habe aber vielleicht kannst du jeden einzelnen Wert auslesen und mit dem vorherigen Wert vergleichen. Ist die Differenz beider größer als ein bestimmter Schwellwert, könntest du das als Trennungsoption wählen und so deine Werte auseinander halten.

Vielleicht könntest du ja mal ein Beispiel formulieren wie das bei aktuellem Wertestapel deiner Meinung nach aussehen soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
Martina

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2009, 11:39     Titel: Re: Bildbestandteile auseinander sortieren
  Antworten mit Zitat      
Es soll dann hinterher so aussehen:
Matrix 1

104 2
105 2
106 2
107 2
108 3
109 3
110 3
111 3
112 3
113 4
114 4
115 4
115 5
116 5
117 5
118 6
119 6
120 6
121 6


Matrix 2

198 2
199 2

200 3
201 3
202 3
203 3

204 4
205 4
206 4
207 4

208 5
209 5

210 6
211 6
212 6



Ich glaube, mein Problem ist hauptsächlich, dass ich mit der exakten Ansteuerung der Elemente nicht klar komme.
ich hab derzeit das da: aber das ist irgendwie kompletter Quatsch, weil falsch.

Code:
laenge=length(x);
for i=2:1:laenge
   Fkt1(i,:)=[x(1), y(1)];
   while ([x(i-1)]+1 ==[ x(i)])
      Fkt1(i,:)=[x(i), y(i)];
   end;
   Fkt2(i,:)=[x(i), y(i)];
   while (x(i-1)+1 == x(i))
      Fkt2(i,:)=[x(i), y(i)];
   end;
end;


Grüße
Martina
 
Martina

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2009, 12:43     Titel: Weitere Frage
  Antworten mit Zitat      
Zusatzfrage:

Ich sortiere obigen Vektor nach x.
Und suche dann die jeweiligen Min und Max von y, wenn x=bestimmter Wert.

Also es gibt z.b. 10 Wertepaare, bei denen x = 2.
y sind verschiedene Werte.
Und ich will nun den maximalen und den Minimalen y- Wert herausbekommen für x durchlaufend bis länge des x-vektors.
Und dann die minimalen und maximalen y in je einem Vektor speichern.

Ich glaube, wenn ich mit der Lösung anfange, würde es leichter gehen?

Martina
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 25.08.2009, 13:31     Titel:
  Antworten mit Zitat      
Hi, wie Olli schon gesagt hat:

Code:

A =[   104     2
   105     2
   106     2
   107     2
   198     2
   199     2
   108     3
   109     3
   110     3
   111     3
   112     3
   200     3
   201     3
   202     3
   203     3
   113     4
   114     4
   115     4
   204     4
   205     4
   206     4
   207     4
   115     5
   116     5
   117     5
   208     5
   209     5
   118     6
   119     6
   120     6
   121     6
   210     6
   211     6
   212     6
   121     6];

g=find(abs(diff(A(:,1)))>1);
a=g(1:2:end)+1;
b=g(2:2:end);
B=[];
for k=1:size(a,1)
    B = [B;A(a(k):b(k),:)];
    A(a(k):b(k),1) = nan;
end
A(isnan(A),:)=[];
 


Ist jetzt mal schnell programmiert, musst dich noch darum kümmern wenn der letzte Wert in B reingehört.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
Martina

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2009, 14:28     Titel:
  Antworten mit Zitat      
Toll!

Danke schön!

Weiß einer von euch, wie ich mein zweites Problem löse (siehe etwas weiter oben)? Das Minumum/Maximum in Abhängigkeit eines zweiten Wertes finden? Ich suche garantiert nur mit den falschen suchbegriffen.

Grüße

Martina
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 25.08.2009, 15:27     Titel:
  Antworten mit Zitat      
Hi,

meinst du so:

Code:


A=[2,5; 2,6; 2,1; 3,2];
t=A(find(A(:,1)==2),2);
max(t)
min(t)
 


Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
Martina

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2009, 07:47     Titel:
  Antworten mit Zitat      
Ich stelle fest, dass ich bei der Deklarierung der Matritzen (also wie ich die Anspreche) grobe Fehler gemacht habe und es deshalb gar nicht funktionieren konnte.
Danke für die Erleuchtung. Very Happy

LG
Martina
 
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 - 2024 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.