arrays - Matlab:如何执行 `repelem` 其中每个元素都是矩阵?

标签 arrays matlab matrix repeat tensor

假设我有 m×n 矩阵 A、B、C,排列在 m×n×3 张量 P 中:

P = cat(3, A, B, C);

我现在想要创建一个新的张量,其中每个矩阵重复 K 次,使第三维大小为 3K。也就是说,如果 K=2 那么我想构建张量

Q = cat(3, A, A, B, B, C, C);

是否有一个很好的内置方法来实现此目的,或者我需要为其编写一个循环?最好与手动方式一样快或更快。

如果 A、B、C 是标量,我可以使用 repelem,但它不能按照我想要的矩阵方式工作。 repmat 可用于构建

cat(3, A, B, C, A, B, C)

但这也不是我所追求的。

最佳答案

As noted通过 @Cris Luengo , repelem(P, 1, 1, k) 实际上会做你想做的事情(不管 MATLAB 文档怎么说),但我可以想到另外两种方法来实现这一点。

首先,您可以使用 repmat第二维度中复制张量 k 次,然后 reshape :

Q = reshape(repmat(P, 1, k, 1), m, n, []);

其次,您可以使用 repelem 为您提供第三维的索引,以便从以下位置构造 Q:

Q = P(:, :, repelem(1:size(P,3), k));

关于arrays - Matlab:如何执行 `repelem` 其中每个元素都是矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75120107/

相关文章:

r - 将每三行数据框相加,然后将新结果相乘 - R

ios - swift ios 追加元素到数组

matlab - MATLAB 中的线性对数回归 : 2 Input-Parameters

matlab - Octave 随机数

python - MATLAB 多维矩阵到 NumPy 矩阵的转换

arrays - 在 matlab 中计算 3 维元胞数组的均值

C++ Char 指向 char 数组的指针

c++ - 在另一个函数中使用返回的数组指针

javascript - 将对象数组转换为属性数组

python - 在python中添加矩阵中的元素