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

Verschiedene Spalten aus Matrix übertragen

 

Theodyzee

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2016, 16:52     Titel: Verschiedene Spalten aus Matrix übertragen
  Antworten mit Zitat      
Mein Ziel ist es eine 3D-Matrix aus einer 2D-Matrix in folgender Form zu bilden:
in die 1. Ebene der 3D-Matrix sollen:
1&2, 5&6, 9&10,... Spalte der 2D-Matrix,
in die 2. Ebene der 3D-Matrix sollen:
3&4, 7&8, 11&12,... Spalte der 2D-Matrix

Wie kann man dies eleganter und kürzer, als im Folgenden realisieren?


Code:
%xm ist als Matrix (10x16) gegeben

xm3(:,1:2,1) = xm(:, 1: 2);
xm3(:,1:2,2) = xm(:, 3: 4);
xm3(:,3:4,1) = xm(:, 5: 6);
xm3(:,3:4,2) = xm(:, 7: 8);
xm3(:,5:6,1) = xm(:, 9:10);
xm3(:,5:6,2) = xm(:,11:12);
xm3(:,7:8,1) = xm(:,13:14);
xm3(:,7:8,2) = xm(:,15:16);



Vielen Dank im Voraus
MfG Theodyzee


Theodyzee

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2016, 17:26     Titel:
  Antworten mit Zitat      
Hallo!

Ich habe es jetzt mit Hilfe von 2 for-Schleifen gelöst bekommen, bin mir aber nicht sicher, ob es nicht doch noch simpler geht...(?!)

Code:
[z,s]=size(xm);
xm3=zeros(z,s/2,2);
b=0;
for j=1:2
    a=1+b;
    for i=1:2:8
        xm3(:,i:i+1,j) = xm(:,a:a+1);
        a=a+4;
    end
    b=2;
end


Vielen Dank im Voraus!
MfG Theodyzee
 
thomasfeja
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2016, 14:08     Titel:
  Antworten mit Zitat      
Hallo Theodyzee,

Du kommst ohne Schleife aus, wenn Du Dir zwei Vektoren mit den benötigten Spaltenindizes erzeugst.

- Thomas

Code:

nSpalten = size(xm,2);
index1 = sort([1:4:nSpalten-3, 2:4:nSpalten-2]);
index2 = sort([3:4:nSpalten-1, 4:4:nSpalten]);
xm3 = cat(3,xm(:,index1),xm(:,index2));
 
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.