如何创建如下形状的矩阵



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

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

其是CCD_ 2乘以CCD_。

一个非常简单的方法是:

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

更简洁地说,您可以使用kron:

q = kron(p, eye(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))
    

相关内容

  • 没有找到相关文章