Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab中创建具有特定秩的mxn矩阵?_Matlab_Matrix_Linear Algebra - Fatal编程技术网

如何在matlab中创建具有特定秩的mxn矩阵?

如何在matlab中创建具有特定秩的mxn矩阵?,matlab,matrix,linear-algebra,Matlab,Matrix,Linear Algebra,我想创建一个秩为k的m×n矩阵 像A是8×8等级5或B是4×6等级4 所以我尝试在MATLAB中编写一个函数,如下所示 我的想法是: 通过nzeros矩阵生成m 通过n矩阵生成m,并将其转换为精简的行梯队形式 将2'矩阵的秩分配给num 如果num=k,则将当前矩阵分配给输出 中断迭代 结果是一个无限循环,所有答案都是6x6zeros矩阵: 我也尝试过这种方法 它可以达到我的目标,但我不知道它是如何成功运作的 谢谢,@anonymous 如果要生成具有指定秩的随机矩阵,可以尝试构建如下所示的

我想创建一个秩为
k
m×n
矩阵

A
8×8
等级
5
B
4×6
等级
4

所以我尝试在MATLAB中编写一个函数,如下所示

我的想法是:

  • 通过
    n
    zeros矩阵生成
    m
  • 通过
    n
    矩阵生成
    m
    ,并将其转换为精简的行梯队形式
  • 将2'矩阵的秩分配给num
  • 如果
    num=k
    ,则将当前矩阵分配给输出
  • 中断迭代
  • 结果是一个无限循环,所有答案都是
    6x6
    zeros矩阵:


    我也尝试过这种方法

    它可以达到我的目标,但我不知道它是如何成功运作的


    谢谢,@anonymous

    如果要生成具有指定秩的随机矩阵,可以尝试构建如下所示的用户函数

    function [Y,rk] = fn(m,n,k)
      P = orth(randn(m,k));
      Q = orth(randn(n,k))';
      Y = P*Q;
      rk = rank(Y);
    end
    
    其中
    p
    Q
    是酉矩阵
    Y
    是生成的带有随机值的矩阵,
    rk
    帮助您检查排名


    示例

    >> [Y,rk] = fn(8,6,5)
    Y =
    
       3.8613e-02   7.5837e-03  -7.1011e-02  -7.0392e-02  -3.8519e-02   1.6612e-01
      -3.1381e-02  -3.6287e-02   1.4888e-01  -7.6202e-02  -3.7867e-02   3.2707e-01
      -1.9689e-01   2.2684e-01   1.2606e-01  -1.2657e-03   1.9724e-01   7.2793e-02
      -1.2652e-01   7.7531e-02   1.3906e-01   3.1568e-02   1.8327e-01  -1.3804e-01
      -2.6604e-01  -1.4345e-01   1.6961e-03  -9.7833e-02   5.9299e-01  -1.5765e-01
       1.7787e-01  -3.5007e-01   3.8482e-01  -6.0741e-02  -2.1415e-02  -2.4317e-01
       8.9910e-02  -2.5538e-01  -1.8029e-01  -7.0032e-02  -1.0739e-01   2.2188e-01
      -3.4824e-01   3.7603e-01   2.8561e-02   2.6553e-02   2.4871e-02   6.8021e-01
    
    rk = 5
    

    您可以轻松使用
    eye
    功能:

    I = eye(k);
    M = zeros(m,n);
    M(1:k, 1:k) = I;
    
    秩(M)
    等于
    k

    >> [Y,rk] = fn(8,6,5)
    Y =
    
       3.8613e-02   7.5837e-03  -7.1011e-02  -7.0392e-02  -3.8519e-02   1.6612e-01
      -3.1381e-02  -3.6287e-02   1.4888e-01  -7.6202e-02  -3.7867e-02   3.2707e-01
      -1.9689e-01   2.2684e-01   1.2606e-01  -1.2657e-03   1.9724e-01   7.2793e-02
      -1.2652e-01   7.7531e-02   1.3906e-01   3.1568e-02   1.8327e-01  -1.3804e-01
      -2.6604e-01  -1.4345e-01   1.6961e-03  -9.7833e-02   5.9299e-01  -1.5765e-01
       1.7787e-01  -3.5007e-01   3.8482e-01  -6.0741e-02  -2.1415e-02  -2.4317e-01
       8.9910e-02  -2.5538e-01  -1.8029e-01  -7.0032e-02  -1.0739e-01   2.2188e-01
      -3.4824e-01   3.7603e-01   2.8561e-02   2.6553e-02   2.4871e-02   6.8021e-01
    
    rk = 5
    
    I = eye(k);
    M = zeros(m,n);
    M(1:k, 1:k) = I;