簡體   English   中英

Matlab中LDPC編碼器和解碼器的奇偶校驗矩陣

[英]Parity check matrix of LDPC encoder and decoder in Matlab

MATLAB 在最新版本中提供了強大的 LDPC 編碼器和解碼器對象。 然而,維數(NK)N的奇偶校驗矩陣H需要滿足以下條件:

“奇偶校驗矩陣H的最后N−K列必須是GF(2)的可逆矩陣”

事實上,對於大多數 LDPC 碼來說,這個條件並不容易滿足,盡管我們知道奇偶校驗矩陣H中至少有一個(NM) × (NM)逆子塊,如果H是滿秩的。

我想知道,如果存在快速算法或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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM