我有一个一定大小的向量,我想将其 reshape 为方阵。这是一个例子:假设向量的大小为 784。然后我将创建一个大小为 28x28 的矩阵。在 Matlab 中,我将使用以下命令来完成此操作:
reshape(x,28,28)
当然,可能不可能有精确的方阵。在这种情况下,矩阵应尽可能呈方形。
如何进行此计算?这意味着我如何计算 reshape(x,a,b)
中的值 a
和 b
?
最佳答案
以 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/