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

Spalte nach Größe sortieren

 

andi_1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2010, 11:35     Titel: Spalte nach Größe sortieren
  Antworten mit Zitat      
Hallo Leute,

habe hier eine Matrix. In der ersten und zweiten Spalte stehen x und y Koordinaten. In der dritten Spalte stehen z-Werte.

Würde diese Matrix gerne nach den z-Werten sortieren.

Dann würde ich gerne an einer bestimmten Schwelle die Werte abschneiden und mir eine neue Matrix ohne diese Werte oberhalb der Schwelle ausgeben lassen.

Kann mir jemand sagen, wie ich das realisieren könnte?
Gruß und Dank


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.07.2010, 11:43     Titel:
  Antworten mit Zitat      
Hallo,

ungetestet:
Code:
M = M(M(:,3) <= schwelle, :);
M = sortrows(M, 3);


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2010, 12:05     Titel:
  Antworten mit Zitat      
Hallo!

Zu deiner 1. Frage:
Ich hatte gerade letztens ein ähnliches Problem und habe hier im Forum dazu einen beantworteten Beitrag gefunden. Hier ist der Link dazu:
http://www.gomatlab.de/matrix-nach-.....12892,highlight,sort.html

Zu der 2. Frage:

Hier am besten ein kurzes Beispiel, wie du Zeilen einer Matrix löschen kannst:

Code:

matrix= [2 3 4; 5 7 8; 9 0 0; 1 1 1; 2 2 2];

% Wenn du z.B. alle Zeilen nach der 3. Zeile entfernen möchtest:
neue_matrix = matrix;
neue_matrix(3:end,:)=[];

% Wenn du alle Zeilen entfernen möchtest, die z.B. größer als ein best. Wert sind, benutzt du am besten find. Bsp.:
neue_matrix = matrix;
index = find(neue_matrix(:,1) >8);
neue_matrix(index,:)=[];

 


Hoffe, das hilft!
 
andi_1

Gast


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

mit einer Kombination aus euren beiden Vorschlägen hab ichs hinbekommen.
Danke euch beiden!

@gast:
-------------------------------------------------------
% Wenn du z.B. alle Zeilen nach der 3. Zeile entfernen möchtest:
neue_matrix = matrix;
neue_matrix(3:end,Smile=[];
-------------------------------------------------------
gibt es hier einen Befehl statt "end" damit ich Werte unterhalb eines schwellwertes abschneiden kann?

Viele Grüße
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 15.07.2010, 15:05     Titel:
  Antworten mit Zitat      
hallo,

du musst nur das Kleinzeichen bei Haralds Vorschlag umdrehen:
Code:

M = M(M(:,3) >= schwelle, :);
 


oder meinst du jetzt was anderes?

gruss
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_1
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 15.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2010, 16:33     Titel:
  Antworten mit Zitat      
Fourier hat Folgendes geschrieben:
hallo,

du musst nur das Kleinzeichen bei Haralds Vorschlag umdrehen:
Code:

M = M(M(:,3) >= schwelle, :);
 


oder meinst du jetzt was anderes?

gruss



dieser Vorschlag klappt irgendie nicht. habe die Variente von "gast" genommen.



Gast hat Folgendes geschrieben:


Zu der 2. Frage:

Hier am besten ein kurzes Beispiel, wie du Zeilen einer Matrix löschen kannst:

[code]
matrix= [2 3 4; 5 7 8; 9 0 0; 1 1 1; 2 2 2];

% Wenn du z.B. alle Zeilen nach der 3. Zeile entfernen möchtest:
neue_matrix = matrix;
neue_matrix(3:end,Smile=[];



habe mich gefragt ob man das hier so umschreiben kann, dass die ersten Werte gelöscht werden...

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.07.2010, 16:44     Titel:
  Antworten mit Zitat      
Hallo,

die ersten Werte = die ersten Zeilen? Natürlich.
Code:
M(1:2, :) = [];


Falls das nicht gemeint ist, bitte mal im Klartext sagen, was gemacht werden soll.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_1
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 15.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2010, 17:00     Titel:
  Antworten mit Zitat      
Okay klappt.

Danke für die Hilfe!
Gruß
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.