【问题标题】:How to creat a matrix like the following shape如何创建如下形状的矩阵
【发布时间】:2020-08-26 13:13:14
【问题描述】:

如果 p = [p1 p2 p3 ... pn]^T 是 n×1。 如何创建以下形状?

P = [p1 0;0 p1;p2 0;0 p2;p3 0;0 p3;...;pn 0;0 pn]

这是2n2

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    一个非常简单的方法是:

    q = zeros(2 * size(p))
    q(1:2:end, 1) = p
    q(2:2:end, 2) = p
    

    更简洁,你可以使用kron

    q = kron(p, eye(2))
    

    【讨论】:

      【解决方案2】:

      p 定义为,例如

      p = [10 20 30 40];
      

      一些可能性:

      1. 使用sparse

        P = full(sparse([1:2:2*numel(p) 2:2:2*numel(p)], repelem([1 2], numel(p)), [p p]));
        
      2. 仅使用赋值索引:

        P = zeros(2*numel(p), 2);
        P((1:2:2*numel(p)).' + [0 2*numel(p)+1]) = [p p];
        
      3. 使用conv2

        t = zeros(2*numel(p)-1, 1);
        t(1:2:end) = p;
        P = conv2(t, eye(2))
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 2016-04-14
        • 1970-01-01
        • 2021-11-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-03
        相关资源
        最近更新 更多