2016-06-28 97 views
0

我试图从旧的3D矩阵生成新的3D矩阵,然后绘制轮廓。新的矩阵是取决于步骤的切片的总和(总和加上每10个步骤)。从具有特定条件的旧3D矩阵生成新的3D矩阵

新矩阵片段1-10将是相同的旧胎体上新的矩阵 片11将从旧矩阵片段1+11新矩阵 片12将是从旧的矩阵片段2+12

时我到达切片21新矩阵切片211+11+21切片从旧矩阵 切片22新矩阵切片22将从2+12+22切片从旧矩阵等等直到我到达步骤30

当我到达片31新的矩阵片段31将从旧胎体1+11+21+31片等

在那之后,我试图绘出轮廓为每个切片。这意味着我将有50等高线图

我用下面的代码,但它不能正常工作。

clc; 
clear; 
A=rand(20,20,50); 
[m,n,k] = size(A); 
Total_A = reshape(cumsum(A,2),m,n,k); 
[x,y]= meshgrid(linspace(0,2),linspace(0,2)); 
for ii=1:50 
contour(x,y,Total_A(:,:,ii)); 
end 

回答

1

解决方案

您可以用下面的办法:

[x,y]= meshgrid(linspace(0,2,size(outMat,1)),linspace(0,2,size(outMat,2))); 
for ii=1:size(outMat,3) 
    figure,contour(x,y,outMat(:,:,ii)); 
end 

结果:

mat = int16(rand(10,10,50)*10); %initializes a random input matrix 

%calculates the output matrix 
outMat = mat; 
for t=1:10 
    outMat(:,:,t:10:end) = cumsum(mat(:,:,t:10:end),3); 
end 

关于在轮廓部分,应该按如下步骤更改

isequal(outMat(:,:,5),mat(:,:,5)) 
isequal(outMat(:,:,11),mat(:,:,1)+mat(:,:,11)) 
isequal(outMat(:,:,31),mat(:,:,1)+mat(:,:,11)+mat(:,:,21)+mat(:,:,31)) 

ans = 1 
ans = 1 
ans = 1 
+0

非常感谢您的回复。请绘制轮廓的命令不能通过。 – user6052232

+0

我明白了,我编辑了我的答案 – drorco