【发布时间】:2021-03-31 12:02:33
【问题描述】:
我想创建一个秩为 k 的 m by n 矩阵。
比如A 是8 × 8 等级为5 或B 是4 × 6 等级为4。
所以我尝试在 MATLAB 中编写一个函数,如下所示。
我的想法是:
- 通过
n零矩阵生成m - 通过
n矩阵生成m并将其转换为缩减的行梯形形式 - 将 2. 的矩阵的秩分配给 num
- 如果
num = k,则将当前矩阵分配给输出 - 中断迭代
function output = check_rank(m,n,k)
while 1
output = zeros(m,n);
matrix = randi(20,m,n);
tmp = rref(matrix);
num = rank(tmp);
if (num == k)
output = matrix;
break;
end
disp(output);
end
A = check_rank(8,8,4)
结果是一个无限循环,所有答案都是6x6 zeros 矩阵:
Command Window Output
我也试过how to create a rank k matrix using matlab?中的方法
A = zeros(8,8);
for i = 1:4, A = A + randn(8,1) * randn(1,8); end
A
rank(A)
它可以达到我的目标,但我不知道它是如何成功的?
谢谢@anonymous!
【问题讨论】:
标签: matlab matrix linear-algebra