2016-06-28 40 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