C ++犰狳重塑只有一维大小的矩阵

Posted

技术标签:

【中文标题】C ++犰狳重塑只有一维大小的矩阵【英文标题】:C++ Armadillo reshape a matrix with only one dimension size 【发布时间】:2017-08-08 16:14:36 【问题描述】:

使用Armadillo,当我只指定一个维度大小时如何重塑矩阵?

在Matlab documentation 中有这样的功能示例:

将 6×6 幻方矩阵重塑为只有 3 列。指定 [] 作为第一个维度大小以进行整形 自动计算适当的行数。

A = magic(6);
B = reshape(A,[],3);

结果是一个 12×3 矩阵,它保持相同数量的 元素 (36) 作为原始 6×6 矩阵。 B中的元素也 保持从 A 开始的列顺序。

犰狳如何做到这一点?

【问题讨论】:

我想我只需要使用第一个矩阵的大小/形状和第二个矩阵中维度的已知大小进行计算。 【参考方案1】:

您可以使用.size() 获取矩阵的元素总数并自己计算维度。 示例:

B = reshape(A, A.size()/3, 3);

【讨论】:

以上是关于C ++犰狳重塑只有一维大小的矩阵的主要内容,如果未能解决你的问题,请参考以下文章

犰狳:矩阵乘法精度损失

在 C++ 中存储大矩阵(犰狳)

C ++犰狳生成给定vec或矩阵的索引uvec而不循环它

从 C 数组(列优先)转换为犰狳矩阵(arma::mat)而不复制

如何将犰狳矩阵转换为立方体?

具有临时消除功能的 C++ OpenCL 矩阵库