假设我有一个维度为 [X,Y,Z] 的 3-D 矩阵 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
但我想知道是否有可用于此目的的内置函数。
最佳答案
创建 1,1,2,2,... 形式的索引(例如 N=2
)并在第三维中使用它:
b = a(:,:,ceil(1/N:1/N:size(a,3)));
关于arrays - 如何在matlab中重复3D矩阵的每个维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23188806/