2016-10-15 31 views

Antwort

3

Ich denke, das ist das, was Sie suchen .

x1 = x(1:2,:) 
x2 = x(3:4,:) 
x3 = x(5:6,:) 
+0

Thank you so much ... – 8727

+2

Hinweis: Dies ist fast nie eine gute Idee in MATLAB. Außerdem ist die Lösung mühsam zu skalieren, wenn sich die Abmessungen ändern. –

+0

Ich habe den Bereich der Zeilen Variablen geändert, so dass die Abmessungen nicht ändern, so gebe ich den Code einige Kombinationen Vielen Dank für Ihre Hilfe, ich schätze und werde versuchen, Ihren Code @Stewie Griffin :) – 8727

2

Don't do this! Es ist nie eine gute Idee! Planen Sie auf combining this with eval? Don't! Wenn Sie sie getrennt haben müssen, legen Sie sie entweder in verschiedenen Schichten in einer dreidimensionalen Matrix oder verwenden Sie Zellenarrays.

3D-Array:

permute(reshape(x.', 5, 2, []), [2 1 3]) 
ans = 
ans(:,:,1) = 
    5 5 3 3 2 
    5 5 2 2 2 
ans(:,:,2) = 
    0 5 5 4 4 
    0 0 0 0 0 
ans(:,:,3) = 
    0 0 0 0 0 
    2 0 3 0 0 

Pannen

permute(reshape(x.',5,2,[]), [2 1 3]) 
       x.'     % Transpose x 
     reshape(x.',5,2,[])   % Reshape x.' to have 5 rows, 2 cols, []-layers 
permute(reshape(x.',5,2,[]), [2 1 3]) % Permute the new 3-dimensional matrix 
             % permute(mat,[2 1 3]) will transpose each layer of 
             % the matrix giving us the result we want 

Zellenanordnung:

mat2cell(x, [2, 2, 2]) 
ans = 
{ 
    [1,1] = 
    5 5 3 3 2 
    5 5 2 2 2 
    [2,1] = 
    0 5 5 4 4 
    0 0 0 0 0 
    [3,1] = 
    0 0 0 0 0 
    2 0 3 0 0 
} 
Verwandte Themen