Can anybody help me to design a Matlab code function that creates a duplication matrix D?
Thanks in advnace.
My codes is very slow…
Any ideas to speed it up?
n=1000;% Duplication matrix: vec(P)=Dvech(P)
ticm=1/2*n*(n+1);nsq=n^2;DT=sparse(m,nsq);for j=1:n for i=j:n ijth=(j-1)*n+i; jith=(i-1)*n+j; vecTij=sparse(ijth,1,1,nsq,1); vecTij(jith,1)=1; k=(j-1)*n+i-1/2*j*(j-1); uij=sparse(k,1,1,m,1); DT=DT+uij*vecTij'; endendD=DT';toc% test duplication matrix
C=rand(n,n);P=1/2*(C+C');vechP=nonzeros(tril(P));vecP=P(:);err_D=vecP-D*vechP;max(err_D(:))min(err_D(:))
Best Answer