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

Mehrere Zeilen aus einer Matrix auslesen

 

shinigami
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 02.12.2016, 13:00     Titel: Mehrere Zeilen aus einer Matrix auslesen
  Antworten mit Zitat      
Hallo,

mein Ziel ist es aus einer (mxn)-Matrix jeweils immer 4xn auslesen und dann die nächsten 4...
Sprich: Wenn meine Matrix 40 Zeilen besitzt und 4 Spalten, dann möchte ich 10 Teilmatrizen erhalten, mit der Dimension (4x4).
Habe in den Foren schon nachgelesen, aber die meisten wollen nur einer bestimmte Zeile oder Spalte, aber ich möchte Perioden weise Matrizen abspeichern.

Gruß
Nick
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: 02.12.2016, 14:15     Titel:
  Antworten mit Zitat      
Hallo,

das kannst du mit mat2cell machen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 02.12.2016, 15:58     Titel:
  Antworten mit Zitat      
Hallo,

danke für die Hilfe.

Gruß
Nick
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: 02.12.2016, 18:34     Titel: Re: Mehrere Zeilen aus einer Matrix auslesen
  Antworten mit Zitat      
Hallo shinigami,

Man muss die Matrizen gar nicht separat speichern. Vielleicht reicht dies ja schon:
Code:
x = rand(12, 4);
y = reshape(x, [4, 3, 4]);
y = permute(y, [2,3,1]);

Jetzt ist "y(:, :, 1)" die erste Untermatrix, usw.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
shinigami
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 02.12.2016, 18:43     Titel:
  Antworten mit Zitat      
Hallo Jan,

Danke zunächst.
Mit deiner Variante sortiert der nicht nach der Reihenfolge, soweit ich das sehe.
Code:
y(:,:,4) =

    0.7328    0.9949    0.4159    0.6239
    0.2216    0.9759    0.6193    0.1223
    0.8592    0.3889    0.1329    0.7140

>> x

x =

    0.1442    0.8001    0.4393    0.4221
    0.7669    0.2869    0.7899    0.7100
    0.7608    0.3663    0.8577    0.7418
    0.7328    0.9949    0.4159    0.6239
    0.3292    0.8395    0.8828    0.7296
    0.3542    0.5444    0.2067    0.2032
    0.9528    0.3565    0.8492    0.9958
    0.2216    0.9759    0.6193    0.1223
    0.1255    0.3710    0.4137    0.7900
    0.2333    0.7502    0.4625    0.3096
    0.3622    0.6909    0.7200    0.4729
    0.8592    0.3889    0.1329    0.7140
 

Ich möchte für
Code:

y(:,:,4) =
    0.1255    0.3710    0.4137    0.7900
    0.2333    0.7502    0.4625    0.3096
    0.3622    0.6909    0.7200    0.4729
    0.8592    0.3889    0.1329    0.7140

erhalten.

Gruß und schönes WE
Nick
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: 04.12.2016, 17:12     Titel:
  Antworten mit Zitat      
Hallo shinigami,

Zitat:
Ich möchte für
Code:

y(:,:,4) =
    0.1255    0.3710    0.4137    0.7900
    0.2333    0.7502    0.4625    0.3096
    0.3622    0.6909    0.7200    0.4729
    0.8592    0.3889    0.1329    0.7140

erhalten.

Das ist nicht möglich: Das Original hat 12*4 Element. Wenn y(:,:,4) eine 4x4-Matrix ist, hätte das Ergebnis 4*4*4 Elemente.
Du kannst es aber auch leichjtz selbst heraus bekommen: Mit reshape und permute und bei Bedarf noch einem weiteren reshape bekommt man jede Umsortierung hin. Und die passenden Parameter kannst Du entweder logisch erschließen, oder einfach durchprobieren, bis es passt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
shinigami
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 05.12.2016, 10:48     Titel:
  Antworten mit Zitat      
Hallo,

Danke für die Hilfe.

Gruß
Nick
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.