Generator matrix for repetition coding

19 views (last 30 days)
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];

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 7 Jun 2016
Edited: Azzi Abdelmalek on 7 Jun 2016
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{:})
  4 Comments
freebil
freebil on 7 Jun 2016
Edited: freebil on 7 Jun 2016
Thank you very much for your answer!
Azzi Abdelmalek
Azzi Abdelmalek on 7 Jun 2016
u=10^5;
q=3;
C=sparse(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;

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!