MATLAB: Generator matrix for repetition coding

generatorMATLABmatrixrepetitionvector

Hello. I would like to be able to make generator repetition matrices for given vectors. If I have the vector
u = [1 0 0 1]
with parameter q=3(how many times every bit will be repeated), I would like to take from matlab the G matrix
G = [1 1 1 0 0 0 0 0 0 0 0 0;
0 0 0 1 1 1 0 0 0 0 0 0;
0 0 0 0 0 0 1 1 1 0 0 0;
0 0 0 0 0 0 0 0 0 1 1 1];
So the multiplication
c = u*G
gives
c = [1 1 1 0 0 0 0 0 0 1 1 1];
So, I would like to give u,q inputs to matlab and get G for very big matrices. Basically, the creation of G matrix requires only the length of u and the q. If the length of u=3 and q=2, we have
G = [1 1 0 0 0 0;
0 0 1 1 0 0;
0 0 0 0 1 1];

Best Answer

  • Edited
    u=3;
    q=2;
    C=zeros(u,q*u);
    jj=1:q;
    for k=1:u
    C(k,jj)=1;
    jj=jj+q;
    end
    C
    %Or
    u=4
    q=3
    C=zeros(u,q*u)
    jj=1:q
    x=reshape(repmat(1:u,q,1),[],1)'
    y=1:q*u
    idx=sub2ind(size(C),x,y)
    C(idx)=1
    %Or
    u=4
    q=3
    d=mat2cell(ones(1,q*u),1,q*ones(1,u))
    out=blkdiag(d{:})