2010-05-06 7 views
0

J'ai un tableau 10x10x10, z. Comment puis-je tracer tout dans la fenêtre SAME de sorte que j'aurais les 3 parcelles z(:,:,1) et en dessous les trois parcelles pour z(:,:,2) etc?Sous-boîtes de tableaux multidimensionnels dans Matlab

C'est ce que j'ai jusqu'à présent:

for i = 1:10 

z=z(:,:,i); 
figure(i) 
subplot(1,2,1) 
surf(z) 

%code, obtain new array called "new1"... 

subplot(1,2,2) 
surf(new1) 

%code, obtain new array called "new2"... 

subplot(1,3,3) 
surf(new2) 

end; 

Répondre

2

Je pense que les deux premières intrigues secondaires sont censés être subplot(1,3,1) et subplot(1,3,2). En outre, essayez d'insérer hold on après chaque commande subplot --- cela devrait vous permettre de conserver tout ce qui a été tracé avant.

for i = 1:10 

z=z(:,:,i); 
figure(i) 
subplot(1,3,1) 
hold on; 
surf(z) 

%code, obtain new array called "new1"... 

subplot(1,3,2) 
hold on; 
surf(new1) 

%code, obtain new array called "new2"... 

subplot(1,3,3) 
hold on; 
surf(new2) 

end; 
+0

Je ne pense pas que la prise est nécessaire dans ce cas - dans un dessin Une sous-parcelle différente ne remplacera pas les précédentes. Mais ce serait le cas si plus d'une surface était tracée dans chaque sous-placette. Encore, +1 pour attraper le bug. – Kena

1

Qu'est-ce new1 et new2? Sont-ils les mêmes pour toutes les rangées? Ou aussi des tableaux 3D?

Je pense que vous avez besoin quelque chose comme ceci:

for i = 1:10 
    subplot(10*3,3,(i-1)*3+1) 
    surf(z(:,:,i)) 
    subplot(10*3,3,(i-1)*3+2) 
    surf(new1) 
    subplot(10*3,3,(i-1)*3+3) 
    surf(new2) 

end 

Ou plus généralement pour la taille variable z:

N = size(z,3); 
for i = 1:N 
    subplot(N*3,3,(i-1)*3+1) 
    surf(z(:,:,i)) 
    subplot(N*3,3,(i-1)*3+2) 
    surf(new1) 
    subplot(N*3,3,(i-1)*3+3) 
    surf(new2) 

end 
Questions connexes