如果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];
一些可能性:
使用
sparse
:P = full(sparse([1:2:2*numel(p) 2:2:2*numel(p)], repelem([1 2], numel(p)), [p p]));
仅使用分配索引:
P = zeros(2*numel(p), 2); P((1:2:2*numel(p)).' + [0 2*numel(p)+1]) = [p p];
使用
conv2
:t = zeros(2*numel(p)-1, 1); t(1:2:end) = p; P = conv2(t, eye(2))