Generator matrix for repetition coding

3 次查看(过去 30 天)
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];

采纳的回答

Azzi Abdelmalek
Azzi Abdelmalek 2016-6-7
编辑:Azzi Abdelmalek 2016-6-7
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 个评论
freebil
freebil 2016-6-7
编辑:freebil 2016-6-7
Thank you very much for your answer!
Azzi Abdelmalek
Azzi Abdelmalek 2016-6-7
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;

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by