将矩阵转换为方阵

时间:2014-02-19 14:46:35

标签: matlab matrix

MATLAB中,假设我们有一个具有以下维度的矩阵:

[11036,1]

我们如何将其转换为方阵?

3 个答案:

答案 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