如何在matlab中重复三维矩阵的每个维度

时间:2014-04-20 23:39:50

标签: arrays matlab matrix

说我有维度[X,Y,Z]的三维矩阵a

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

有没有办法重复a的每个条目,比如N次,并构建一个维度为[X,Y,N * Z]的新矩阵b?例如,如果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

但我想知道是否有可用于此目的的内置功能。<​​/ p>

1 个答案:

答案 0 :(得分:2)

创建1,1,2,2,...形式的索引(N=2的示例)并在第三维中使用它:

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