基于Matlab的LDPC编解码器奇偶校验矩阵

基于Matlab的LDPC编解码器奇偶校验矩阵,matlab,matrix,error-correction,Matlab,Matrix,Error Correction,MATLAB在最新版本中提供了强大的LDPC编码器和解码器对象。但是,尺寸为N的奇偶校验矩阵H,需要满足以下条件: “最后一个N−奇偶校验矩阵H中的K列必须是GF(2)中的可逆矩阵。” 实际上,对于大多数LDPC码来说,这一条件并不容易满足,尽管我们知道,如果H具有满秩,则奇偶校验矩阵H中至少有一个(N-M)by(N-M)可逆子块 我想知道,如果存在一个快速算法或一个MATLAB函数,它可以在H中找到一个可逆子块,前提是H具有满秩。因此,我们可以方便地使用MATLAB对象和Simulink块。我

MATLAB在最新版本中提供了强大的LDPC编码器和解码器对象。但是,尺寸为
N
的奇偶校验矩阵
H
,需要满足以下条件:

“最后一个
N−奇偶校验矩阵
H
中的K
列必须是
GF(2)
中的可逆矩阵。”

实际上,对于大多数LDPC码来说,这一条件并不容易满足,尽管我们知道,如果
H
具有满秩,则奇偶校验矩阵
H
中至少有一个
(N-M)
by
(N-M)
可逆子块


我想知道,如果存在一个快速算法或一个MATLAB函数,它可以在
H
中找到一个可逆子块,前提是
H
具有满秩。因此,我们可以方便地使用MATLAB对象和Simulink块。

我尝试重新禁用H矩阵的列,直到它与Malab匹配

% Programmer: Taha Valizadeh
% Date: September 2016

%% Column Permutation
% Permute columns of a binary Matrix until the rightmost square matrix is
% invertible over GF(2)

% matrix dimensions:
[~, n] = size(H);

% Initialization
HInvertible = H;
PermutorIndex = 1:n;
flag = true;
counter = 0;

% Initial Report
disp('Creating a ParityCheck matrix which is suitable for MATLAB COMM Tollbox')

% Permute columns
while flag

    % Check if the rightmost square matrix is invertible over GF(2)
    try

        EncoderObject = comm.LDPCEncoder(sparse(HInvertible));  
                                % Check if new matrix works
        fprintf(['ParityCheck Matrix become suitable for Matlab LDPC Encoder ',...
            'after ',num2str(counter),' permutations!\n'])
        flag = false;           % Break the loop

    catch

        % Choose different columns for the rightmost part of matrix
        counter = counter+1;    %Permutation Counter
        PermutorIndex = randperm(n);
        HInvertible = H(:,PermutorIndex);

    end

end

很抱歉这么晚才看到你的答案。非常感谢您的Matlab代码。我会试着运行它们。事实上,当我在做模拟时,我曾经将信息符号编码成一个全零的码字。但是这种方法并不总是有效的,这是有效的。我在我的项目中使用了它。唯一的缺点是,它在排列之后重新排列奇偶校验矩阵的列。如果可以的话,那你就好了。