说我有维度[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>
答案 0 :(得分:2)
创建1,1,2,2,...形式的索引(N=2
的示例)并在第三维中使用它:
b = a(:,:,ceil(1/N:1/N:size(a,3)));