matlab - 如何将向量 reshape 为方阵?

标签 matlab matrix reshape

我有一个一定大小的向量,我想将其 reshape 为方阵。这是一个例子:假设向量的大小为 784。然后我将创建一个大小为 28x28 的矩阵。在 Matlab 中,我将使用以下命令来完成此操作:

reshape(x,28,28)

当然,可能不可能有精确的方阵。在这种情况下,矩阵应尽可能呈方形。

如何进行此计算?这意味着我如何计算 reshape(x,a,b) 中的值 ab

最佳答案

a 开头等于 numel(x) 的平方根向下舍入。如果这个数字不能整除 numel(x) ,减去1然后再试一次。这样你就可以得到a等于最接近的整数sqrt(x) (从下往上)划分numel(x)b那么将是numel(x)/a ,但您可以简单地使用 []作为 reshape 的第三个参数:

a = floor(sqrt(numel(x)));
while mod(x,a)
    a = a-1;
end
result = reshape(x,a,[]);

示例:

x = 1:20;

给出

result =
     1     5     9    13    17
     2     6    10    14    18
     3     7    11    15    19
     4     8    12    16    20

关于matlab - 如何将向量 reshape 为方阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31437743/

相关文章:

python - 在 Python 中从矩阵中选择列向量

中间重新整形

R:统计包中的 reshape() 函数有问题

python - 通过 subprocess.Popen 执行 Matlab 例程时如何将值从 Matlab 返回到 Python

matlab - SIFT 中的解释分数

algorithm - 向量化帕累托前沿算法

python - 如何在 Numpy(或其他 Python 解决方案)中利用外积的对称性?

python - 将向量组合为 numpy 中的列矩阵

R:与使用 tidytext::unnest_tokens 聚合相反。多变量和大写

matlab - 将多个元胞数组合并为一个元胞数组 (Matlab)