2014-04-20 50 views
2

說我有尺寸的3 d矩陣a [X,Y,Z],如何重複3 d矩陣的各個維度在MATLAB

a(:,:,1) = [1 2; 3 4]; 
a(:,:,2) = [5 6; 7 8]; 

有沒有辦法重複的每個條目的a,說N次,並構造一個新的矩陣,b,尺寸爲[X,Y,N * Z]?例如,如果N = 2,爲具有矩陣b像這樣,

%repeat first element of 'a' 2ce 
b(:,:,1) = [1 2; 3 4]; 
b(:,:,2) = [1 2; 3 4]; 

%repeat second element of 'a' 2ce 
b(:,:,3) = [5 6; 7 8]; 
b(:,:,4) = [5 6; 7 8]; 

使用嵌套循環可以實現這當然,對於例如

%not tested, but should work 
b = zeros(X,Y,N*Z); 

k=1; 

for j=1:Z 
    for i=1:N 
    b(:,:,k) = a(:,:,j); 
    k=k+1; 
    end 
end 

但我想知道是否有內置功能可用於此目的。

回答

2

創建表格1,1,2,2- ...(例如用於N=2)的索引,並且在第三維度使用它:

b = a(:,:,ceil(1/N:1/N:size(a,3))); 
+0

完善。謝謝。 – iab