在MATLAB
中,假设我们有一个具有以下维度的矩阵:
[11036,1]
我们如何将其转换为方阵?
答案 0 :(得分:4)
答案取决于您是要按行还是按列工作。假设你有
>> m = [1 2 3 4 5 6];
并且您想将其转换为2 x 3矩阵。你可以做到
>> reshape(m,2,3)
ans =
1 3 5
2 4 6
或
>> reshape(m.',3,2).' %// note inversion of size and two transposes
>> ans =
1 2 3
4 5 6
在您的情况下,11036不是完美的正方形,因此除非从原始矩阵中删除条目或在目标矩阵中引入新值,否则无法转换为方阵。
答案 1 :(得分:1)
您可以使用函数reshape将矩阵尺寸更改为您想要的尺寸(只要它们兼容)。
答案 2 :(得分:1)
另一种选择。如果您想获得保存矢量的最小方阵,并用零填充任何未使用的元素,您可以使用以下内容:
a = rand(11036,1); % Demo data
n = ceil(sqrt(numel(a))); % Dimension of smallest square matrix
b = zeros(n);
b(1:numel(a)) = a(:);
在这种情况下将创建一个106乘106的矩阵。另一个更简单的例子
a = 1:13;
n = ceil(sqrt(numel(a))); % 4
b = zeros(n);
b(1:numel(a)) = a(:)
返回
b =
1 5 9 13
2 6 10 0
3 7 11 0
4 8 12 0