?? qc_ldpc.m
字號:
function Array = QC_LDPC(m,a,b,output_file)
%QC_LDPC(m,a,b) as defined in Fujita paper
%order(a) = j and order(b) = k
invalid_parameters = 0;
%if(isprime(m)) %checking to make sure "p" is prime and odd
Identity = eye(m);
V = zeros(m,m);
sigma = circshift(Identity,[0 -1]);
zero_vector = zeros(1,m);
random_vector = Srandom(m,1);
k = order(a,m);
j = order(b,m);
%else
% invalid_parameters = 1;
%end
if invalid_parameters ~= 1
%make Array code
for q=1:j
for r = 1:k
if(q==1 && r == 1)
Matrix = circshift(Identity,[0 -1]);
elseif q == 1
power = mod(a^(r-1),m);
Matrix = circshift(Identity,[0 -power]);
elseif r == 1
power = mod(b^(q-1),m);
Matrix = circshift(Identity,[0 -power]);
else
power1 = mod(b^(q-1),m);
power2 = mod(a^(r-1),m);
power = mod(power1*power2,m);
Matrix = circshift(Identity,[0 -power]); %circular shift matrix to the left by power
end
for y=1:m
for z = 1:m
row = (q-1)*m;
column = (r-1)*m;
Array(row + y,column + z) = Matrix(y,z);
end
end
end
end
S_58 = sigma^58;
S_34 = sigma^34;
S_42 = sigma^42;
S_12 = sigma^12;
S_22 = sigma^22;
S_15 = sigma^15;
%for z=1:61
%S_58(z,:) = zeros(1,61);
%S_34(z,:) = zeros(1,61);
%S_42(z,:) = zeros(1,61);
%S_12(z,:) = zeros(1,61);
%S_22(z,:) = zeros(1,61);
%S_15(z,:) = zeros(1,61);
%end
%H1 = [sigma^1 sigma^25 sigma^199 sigma^76 sigma^196;
% sigma^7 sigma^46 sigma^85 sigma^208 sigma^88];
H1 = [sigma^1 sigma^477 sigma^493 sigma^529 sigma^821;
sigma^225 sigma^137 sigma^361 sigma^21 sigma^733;
sigma^899 sigma^441 sigma^201 sigma^505 sigma^345];
H2 = [sigma^1 sigma^212 sigma^239 sigma^500 sigma^570;
sigma^130 sigma^797 sigma^276 sigma^120 sigma^299;
sigma^680 sigma^613 sigma^196 sigma^191 sigma^753];
% H2 = [Identity Identity Identity Identity Identity Identity Identity;
% Identity sigma^1 sigma^2 sigma^3 sigma^4 sigma^5 sigma^6;
% Identity sigma^2 sigma^4 sigma^6 sigma^8 sigma^10 sigma^12];
% H3 = [sigma^1 sigma^55 sigma^71 sigma^107 sigma^188;
% sigma^210 sigma^156 sigma^140 sigma^104 sigma^23];
%H4 = [sigma^188 sigma^107 sigma^71 sigma^55 sigma^1;
% sigma^23 sigma^104 sigma^140 sigma^156 sigma^210];
rank(H1)
rank(H2)
Array_3 = [H1];
%Array_3 = [sigma^1 sigma^58 sigma^199 sigma^148 sigma^144 sigma^123 sigma^171;
% sigma^1 sigma^123 sigma^148 sigma^58 sigma^171 sigma^144 sigma^199;
% sigma^14 sigma^179 sigma^43 sigma^173 sigma^117 sigma^34 sigma^73;
% sigma^14 sigma^34 sigma^173 sigma^179 sigma^73 sigma^117 sigma^43;
% sigma^196 sigma^185 sigma^180 sigma^101 sigma^161 sigma^54 sigma^178;
% sigma^196 sigma^54 sigma^101 sigma^185 sigma^178 sigma^161 sigma^180];
rank(Array_3)
%Put Array in A-list format
[n_vector,m_vector,n_length,m_length] = MatrixToAlist(Array_3);
[m,m_max] = size(m_vector);
[n,n_max] = size(n_vector);
%for i=1:rows
% m_size(1,i) = m_max;
%end
%for j=1:columns
% n_size(1,j) = n_max;
%end
fpointer = fopen(output_file,'w');
fprintf(fpointer,'%d %d \n',n,m);
fprintf(fpointer,'%d %d \n',n_max,m_max);
for i=1:n
fprintf(fpointer,'%d ',n_length(1,i));
end
fprintf(fpointer,'\n');
for i=1:m
fprintf(fpointer,'%d ',m_length(1,i));
end
fprintf(fpointer,'\n');
%print n_vector
for i = 1:n
for j = 1:n_length(1,i)
fprintf(fpointer,'%d ',n_vector(i,j));
end
fprintf(fpointer,'\n');
end
%print m_vector
for i = 1:m
for j = 1:m_length(1,i)
fprintf(fpointer,'%d ',m_vector(i,j));
end
fprintf(fpointer,'\n');
end
fprintf(fpointer,'\n');
fclose(fpointer);
%dlmwrite('m_size.txt',m_size,' ',0,0);
%dlmwrite('n_size.txt',n_size,' ',0,0);
%dlmwrite('n_vector.txt',n_vector,' ',0,0);
%dlmwrite('m_vector.txt',m_vector,' ',0,0);
else
Array = -1;
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -