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

Matrix ausschneiden

 

latadm
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 26.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2014, 18:17     Titel: Matrix ausschneiden
  Antworten mit Zitat      
Hallo an Alle,

bin ein Matlab-Neuling und hoffe, dass ihr mir helfen könnt.

Ich habe eine riesige Matrix (40000 Zeilen, 25 Spalten). Die letzte Spalte ist eine Art Nummerierung, die mit 1 anfängt und nach Tausenden von Zeilen um 1 größer wird. Nun soll das Programm so aussehen, dass der Benutzer die Nummerierungen auswählen kann (z.B. 3, 5 und 8 ), alle Zeilen mit diesen Nummerierungen aus der Gesamtmatrix herausgeschnitten werden und untereinander zusammengefügt werden.
Habe das Ganze mit dem Befehl find versucht, jedoch erfolglos.

Kann mir da jemand weiterhelfen? Habe hier im Forum gesucht jedoch nichts passendes gefunden.

Über eine Antwort würde ich mich freuen.

Lg latadm
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 20.10.2014, 21:36     Titel:
  Antworten mit Zitat      
Hallo,

ich kann mir nicht vorstellen, dass man hier im Forum nicht mal einen Ansatz das findet. Auch das hier sind absolute Basics, wie man Reihen und Spalten einer Matrix anspricht.

Code:

Matrix(1,:) % alle Elemente der 1. Reihe
Matrix(:,1) % alle Elemente der 1. Spalte
 


Eine mögliche Umsetzung wäre so...aber das geht auch noch besser.

Code:

prompt = {'Eingabe der gewünschten Zeilen aus Matrix:'};
dlg_title = 'Input';
num_lines = 1;
% Dialogbox erstellen
answer = inputdlg(prompt,dlg_title,num_lines); % Eingabe der Zeilen durch Leerzeichen trennen
Zeile = str2num(answer{:}); % Eingabe von string in Zahl wandeln

matrix=rand(10,10); % Testmatrix 10x10 Elemente
neu = [];

% Schleife je nach Eingabe (Anzahl Zeilen)
for i=1:size(Zeile,2)
    neu = [neu, matrix(Zeile(i),:)]; % jede i. Zeile in neu hinten anhhängen
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 20.10.2014, 22:34     Titel:
  Antworten mit Zitat      
Hallo latadm,

du schreibst, du hast das mit dem find-Befehl versucht, aber nicht geschafft. Woran ist es denn gescheitert? Schreib doch beim nächsten Mal deinen Versuch gleich mit ins Forum, vielleicht hätte eine kleine Äderung schon den Erfolg gebracht.
Wie auch immer, eine billige Variante mit find und einer Schleife kann so aussehen:
Code:
% Deine Daten etwa so:
M = rand(40000, 25);
i = rand(40000, 1) > 0.98;
i = cumsum(i);
M(:, 25) = i;

% Teilmatrix aus Zeilen, deren Wert der 25. Spalte 3, 5 oder 8 beträgt
Nummerierung = [3, 5, 8];
zeilenindices = [];
for nummer = Nummerierung
    zeilenindices = [zeilenindices; find(M(:,25)==nummer)];
end
Teilmatrix = M(zeilenindices,:);


Vielleicht geht es mit etwas mehr Hirnschmalz auch ohne Schleife, aber das hier sollte schon mal funktionieren.

Viele Grüße,
Nras.

Edit: Oh, du hast inzwischen ja schon eine Antwort. Hatte das hier geschrieben (und eigentlich abgeschickt), war aber nicht angemeldet, daher hat er mir das wohl irgendwie unbemerkt verweigert. Naja.. nun hast du schon mal zwei Ansätze Smile.
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 - 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.