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

einfaches sortieren

 

xPashAx
Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 16.12.2010, 10:49     Titel: einfaches sortieren
  Antworten mit Zitat      
hi leute,
ich habe eine matrix.
Code:

xy=[-2 -3 -5 6 7 -6 ; 1 2 3 4 5 6]
 

ich versuche diese koordinaten zu sortieren.
so solls aussehen
Code:

x_positiv=  [6 7 ; 4 5];
x_negativ= [-2 -3 -5 -6; 1 2 3 6];
 


vielen dank

Zuletzt bearbeitet von xPashAx am 16.12.2010, 11:02, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Achi
Forum-Guru

Forum-Guru


Beiträge: 250
Anmeldedatum: 14.04.10
Wohnort: ---
Version: R2007a
     Beitrag Verfasst am: 16.12.2010, 10:59     Titel:
  Antworten mit Zitat      
Du hast ein Array.
Laughing
xy=[-2 -3 -5 6 7 -6 1 2 3 4 5 6] ;

[x_pospos]=find(xy>=0);
x_positiv=xy(x_pospos)

[x_posneg]=find(xy<0);
x_negativ=xy(x_posneg)
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 16.12.2010, 11:10     Titel:
  Antworten mit Zitat      
Folgender Vorschlag:

Code:

x_pos=[];
x_neg=[];
for i = 1 : length(xy)
 if xy(1,i)<0
  if isempty(x_neg)
   len = 1;
  else
   len = length(x_neg(1,:))+1;
  end
  x_neg(1, len) = xy(1,i);
  x_neg(2, len) = xy(2,i);
 else
  if isempty(x_pos)
   len = 1;
  else
   len = length(x_pos(1,:))+1;
  end
  x_pos(1, len) = xy(1,i);
  x_pos(2, len) = xy(2,i);
 end
end
disp(x_pos);
disp(x_neg);
 


Was schöneres ist mir jetzt nicht eingefallen.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?

Zuletzt bearbeitet von _Peter_ am 16.12.2010, 11:11, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 16.12.2010, 11:11     Titel:
  Antworten mit Zitat      
sorry hab das ; vergessen.
nein dein lösung ergibt nicht was ich wollte, aber trotzdem vielen dank für die schnelle antwort.
hab selber ne lösung gefunden, gibts vllt noch ne alternative, nur aus neugier.

Code:


index_x_pos=find(xy(1,:)>0)
xy_positiv=xy(:,index_x_pos)

index_x_neg=find(xy(1,:)<0)
xy_negativ=xy(:,index_x_neg)

 


danke Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Tox
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 26.08.08
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 16.12.2010, 11:28     Titel:
  Antworten mit Zitat      
Code:
xy = [-2 -3 -5 6 7 -6; 1 2 3 4 5 6];
x_posistiv = [];
x_negativ  = [];

for c = 1:length(xy)
    if xy(1,c)>0 && xy(2,c)>0
        x_posistiv = [x_positiv xy(:,c)]
    elseif xy(1,c)<0 || xy(2,c)<0
        x_negativ = [x_negativ xy(:,c)]
    end
end

disp(x_posistiv);
disp(x_negativ);
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 16.12.2010, 14:18     Titel:
  Antworten mit Zitat      
Hallo

das ist meine Alternative:
Code:

xy=[-2 -3 -5 6 7 -6 ; 1 2 3 4 5 6];
idx_pos = xy > 0;

xy_positiv = xy(:, all(idx_pos,1) )
xy_negativ = xy(:, ~all(idx_pos,1) )
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.12.2010, 16:55     Titel:
  Antworten mit Zitat      
Hallo xPashAx,

Man kann noch das FIND weglasen und damit etwas Zeit sparen:
Code:

index_x_pos = (xy(1,:) > 0)
xy_positiv=xy(:, index_x_pos)

index_x_neg = (xy(1,:) < 0)
xy_negativ=xy(:, index_x_neg)
 

Denny's Lösung mit dem NOT-Operator ist dann effizienter, wenn garantiert kein xy(1, :)==0 ist.

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