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

Zeilenweises sortieren

 

Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 14:10     Titel: Zeilenweises sortieren
  Antworten mit Zitat      
Sorry, ich komme mit dem Sortierbefehl gar nicht klar.

Kann mir jemand bitte hier helfen.

Beispiel:

Ich habe diese Werte:
0.125714 0.114286 0 0.153801
0.188571 0.114286 0 0.152149
0.251429 0.114286 0 0.147441
0.314286 0.114286 0 0.138461
0.377143 0.114286 0 0.124916
0.125714 0.177143 0 0.144627
0.188571 0.177143 0 0.143357
0.251429 0.177143 0 0.139477
0.314286 0.177143 0 0.131962
0.377143 0.177143 0 0.120561

und möchte sie nach der Größe des Wertes der Spalte 1 sortieren. Also:

0.125714 0.114286 0 0.153801
0.125714 0.177143 0 0.144627
0.188571 0.114286 0 0.152149
0.188571 0.177143 0 0.143357
0.251429 0.114286 0 0.147441
0.251429 0.177143 0 0.139477

usw.

Wie mache ich das am Schlausten?

Danke schon einmal für eure Hilfe

ein totaler Matlab-Neuling


LittleX
Forum-Guru

Forum-Guru


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

am einfachsten so:
Code:


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 15:35     Titel:
  Antworten mit Zitat      
Danke schön,

ja, es sollte funktionieren. Tut es aber leider nicht Sad

Er tauscht jetzt einfach die Spalten miteinander. Shocked

Spalte 1 = Spalte 13
Spalte 2 = Spalte 12
Spalte 4 = Spalte 14
Spalte 5 = Spalte 1
Spalte 6 = Spalte 16
Spalte 7 = Spalte 15

und das wollte ich ja nun gar nicht. Die Spalten sollten so beleiben wie sie sind. Nur die Zeilen sollen sich entsprechende der Neusortierung der Spalte 1 verändern.

Im aufgeführten Beispiel in der Hilfe sieht es auch total einfach aus, aber nicht bei mir Embarassed
 
Matlab.lab
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 07.09.09
Wohnort: Ulm HMS
Version: 2007 a
     Beitrag Verfasst am: 29.10.2009, 15:40     Titel:
  Antworten mit Zitat      
Also bei mir funktionierts mit sortrows einwandfrei.. habs extra ausprobiert!
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 15:57     Titel:
  Antworten mit Zitat      
also bei mir werden keine Spalten vertauscht:
Code:

>> m = magic(5)

m =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

>> M = sortrows(m)

M =

     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9
    17    24     1     8    15
    23     5     7    14    16

 


Was passiert denn, wenn Du genau die gleichen Befehle eingibst?
Welche MATLAB Version verwendest Du?

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 16:16     Titel:
  Antworten mit Zitat      
Shocked ... dann bekomme ich exakt eure Ergebnisse Very Happy

Warum klappt es dann nicht, wenn ich meinen Datenfile einlese Embarassed Embarassed

Werde noch mal weiter probieren.

Danke schön
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 16:29     Titel:
  Antworten mit Zitat      
So sieht es bei mir aus Sad

Originaldaten:

Zitat:
Columns 3971 through 3973

8.5486 8.6114 8.6743
1.8743 1.8743 1.8743
0 0 0
0.0200 0.0193 0.0186
-0.0333 -0.0314 -0.0294
3.0000 3.0000 3.0000
0.0388 0.0369 0.0348
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0


und nach

Code:


Zitat:
Columns 3971 through 3973

-0.0333 -0.0314 -0.0294
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
1.8743 1.8743 1.8743
8.5486 8.6114 8.6743
0.0200 0.0193 0.0186
0.0388 0.0369 0.0348
3.0000 3.0000 3.0000


Es sollte nach der Spalte (hier Zeile) 1 sortiert werden. Es müsste also theoretisch 29 x der WErt 8.5486 erscheinen, dann 29 x 8.6114 und nicht

8.5486 8.6114 8.6743 Rolling Eyes
 
Schrank
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 10.07.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 29.10.2009, 20:28     Titel:
  Antworten mit Zitat      
Hallo,
also ich hab das mal bei mir eingegeben:
Code:
Daten = [
8.5486 8.6114 8.6743;
1.8743 1.8743 1.8743;
0 0 0;
0.0200 0.0193 0.0186;
-0.0333 -0.0314 -0.0294;
3.0000 3.0000 3.0000;
0.0388 0.0369 0.0348;
0 0 0;
0 0 0;
0 0 0;
0 0 0;
0 0 0;
0 0 0;
0 0 0;
0 0 0;
0 0 0];
sortrows(Daten)

ans =

   -0.0333   -0.0314   -0.0294
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
    0.0200    0.0193    0.0186
    0.0388    0.0369    0.0348
    1.8743    1.8743    1.8743
    3.0000    3.0000    3.0000
    8.5486    8.6114    8.6743

 

Bist du dir sicher, dass dein Array wirklich so vorliegt?

Grüße
Schrank
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2009, 09:54     Titel:
  Antworten mit Zitat      
Ja, leider ja ... gerade noch einmal getestet.

Columns 3971 through 3973

Code:
  -0.0333   -0.0314   -0.0294
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
         0         0         0
    1.8743    1.8743    1.8743
    8.5486    8.6114    8.6743
    0.0200    0.0193    0.0186
    0.0388    0.0369    0.0348
    3.0000    3.0000    3.0000


Der Witz an der Sache ist, wenn ich nur mit Daten handiere, wie z.B. mit magic oder so, dann funktioniert der Befehlt. Sobald ich die Datei einlese, ist zick. Ich hänge mal eine Testdatei dran. Vielleicht (hoffe ich) findet jemand die Ursache. Es geht darum, die Spalte 1 der Größe nach zu sortieren.

Danke schön schon einmal.

test.doc
 Beschreibung:
testdatei

Download
 Dateiname:  test.doc
 Dateigröße:  748.5 KB
 Heruntergeladen:  828 mal
 
Matlab.lab
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 07.09.09
Wohnort: Ulm HMS
Version: 2007 a
     Beitrag Verfasst am: 30.10.2009, 10:43     Titel:
  Antworten mit Zitat      
um... dann muss es aber an was andrem liegen, vllt der einlesefunktion, oder vllt sinds zuviel werte für deine kiste ^^
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2009, 11:43     Titel:
  Antworten mit Zitat      
wie liest Du denn die Datei ein? poste doch mal Deinen Code, das macht das Fehler suchen einfacher.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2009, 12:25     Titel:
  Antworten mit Zitat      
Code:
clear all
close all

Y = 1;

colums=16;
Headerlines=20;

d=uigetdir('','Auswahl Datenordner');
cd(d);
pr=dir('*.dat');
names={pr.name};

numfiles=numel(names);

 i= 1;
   
    fid= fopen(names{1,i},'r');
   
    InputText= textscan(fid, '%s', Headerlines, 'delimiter', '\n'); %read the head of the file
    Daten= fscanf(fid,'%g %g %g ', [colums inf]);  %read the data
   
    fclose(fid);
   
    yl= [min(Daten(4,:)) max(Daten(4,:))];
       
    [b, m, n]= unique(Daten(2,:),'first');
    X= Daten(1,1:length(b))
   
   
    for j= 1:m(2)-1      
       
        C= Daten(4,m+j-1);
   
        % Plotten
        plot(X,C), ylim(yl)
        Bild(j) = getframe;  
             
           
    end

    movie2avi(Bild,'out.avi','compression','none')  
    movie(Bild,1e6)

 


Das ist der Code und der klappt auch für Spalte 2. Nun möchte ich aber Spalte 1 genauso sortiert haben, wie Spalte 2 und hatte dazu diesen Befehl verwendet:

Code:


... und da klappt es auf einmal nicht mehr.

Mich wundert es nur ein wenig Embarassed ... denn normalerweise sollte es funktionieren.
 
LittleX
Forum-Guru

Forum-Guru


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

die ursprünglichen Spalten in der Textdatei sind bei Dir nach dem Einlesen nicht die Spalten der Matrix sondern die Zeilen. D.h. Du solltest die Matrix transponieren, dann stimmt es wieder.

Viele Grüße,

LittleX
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.