2014-04-20 48 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