arrays - 如何在matlab中重复3D矩阵的每个维度

标签 arrays matlab matrix

假设我有一个维度为 [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/

相关文章:

matlab - 使用matlab用频谱图处理后从FFT帧中提取局部最大值

c - 试图了解我的代码中的问题

python - 用numpy查找矩阵中哪些行的所有元素都为零

c - 如何在 C 中增加指针(二维数组)

c - 需要帮助解决由Game Maker语言重写动态内存分配器(最初为C)引起的最后几个非bug的“怪胎”

javascript - 如何在删除重复项的同时合并对象数组

javascript - 高效地处理 Javascript 中的数组

java - 从逗号分隔的文本文件中读取数组

matlab - 在 Matlab Spectrogram 函数中定义频率限制的建议?

Matlab:如何在图像中弯曲线条