如何使用 MATLAB 创建 k 阶矩阵?

发布于 2024-11-30 11:40:08 字数 100 浏览 1 评论 0原文

我希望创建一个等级为 k 的矩阵。 矩阵的维度为mx n。输入k满足条件k <<分钟(m,n)。

Im looking to create a matrix of rank k.
The dimension of the matrix is m x n. The input k satisfies that condition that k < min(m,n).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

难忘№最初的完美 2024-12-07 11:40:08

目前还不太清楚您的目标是什么。

但为了从矩阵 A(至少具有 rank)创建具有特定秩 k 的矩阵 B 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

It's not really so clear what you are aiming for.

But in order to create a matrix B with specific rank k, from a matrix A (with rank at least k), you may like to utilize svd and proceed like:

>>> 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
那伤。 2024-12-07 11:40:08

嗯,一个简单的方法是生成一个矩阵,如下所示:

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

即单位矩阵的 k 列,然后重复最后一列 nk 次(或 mk< /em> 次,取决于方向)。

Well, a trivial method is to produce a matrix that looks like:

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

i.e. k columns of the identity matrix, then repeat the last column n-k times (or m-k times, depending on orientation).

岁吢 2024-12-07 11:40:08

秩为 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

A matrix of rank 1 can be created by the outer product of two vectors, for example:

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

Add together k of these and you will have a matrix of rank k. Like this:

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

ans =  4
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文