📄 array_ldpc.m
字号:
function Array = Array_LDPC(p,j,k,output_file)
%Input Array(p,j,k) as defined in Fujita paper
invalid_parameters = 0;
if(isprime(p) && mod(p,2)) %checking to make sure "p" is prime and odd
Sigma = Sigma_Array(p);
Identity = eye(p);
else
invalid_parameters = 1;
end
if ( (j<2) || (j > k) || (k >p))
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 = Identity;
else
Matrix = Sigma^((q-1)*(r-1));
end
for y=1:p
for z = 1:p
row = (q-1)*p;
column = (r-1)*p;
Array(row + y,column + z) = Matrix(y,z);
end
end
end
end
rank1 = rank(Array);
%Put Array in A-list format
[n_vector,m_vector,n_length,m_length] = MatrixToAlist(Array);
[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 + -