如何使用matlab创建秩k矩阵?

时间:2011-08-19 16:35:58

标签: matlab matrix linear-algebra

我希望创建一个排名 k 的矩阵。 矩阵的维数为 m x n 。输入 k 满足 k

3 个答案:

答案 0 :(得分:4)

你的目标并不是那么清楚。

但是为了从矩阵Bk至少A)创建具有特定等级rank的矩阵k,您可以喜欢利用svd并继续下去:

>>> A= rand(7, 5);
>>> rank(A)
ans =  5
>>> [U, S, V]= svd(A);
>>> k= 3;
>>> B= U(:, 1: k)* S(1: k, 1: k)* V(:, 1: k)';
>>> rank(B)
ans =  3

答案 1 :(得分:3)

嗯,一个简单的方法是生成一个看起来像这样的矩阵:

1 0 0 0 0
0 1 0 0 0
0 0 1 1 1
0 0 0 0 0

即。单位矩阵的 k 列,然后重复最后一列 n-k 次(或 m-k 次,取决于方向)。

答案 2 :(得分:1)

秩1的矩阵可以由两个向量的外积创建,例如:

A = randn(10,1) * randn(1,10);

将这些k加在一起,你将得到一个等级为k的矩阵。像这样:

>> A = zeros(10);
>> for i = 1:4, A = A + randn(10,1) * randn(1,10); end
>> rank(A)

ans =  4