ldpcqenc.c

来自「LDPC中的q进制编码算法」· C语言 代码 · 共 55 行

C
55
字号
#include <mex.h>
#include <matrix.h>         //for Matlab mx and mex fuctions
#include <math.h>

// 0            0  1   2
//[u]=ldpcqenc(h1j,s,cols)
void mexFunction( int nlhs, mxArray *plhs[],
                  int nrhs, const mxArray*prhs[] )
{
    //input
    double *h1j;        //pointer variable for input matrix h1j
    double *s;          //pointer variable for input matrix s (inf bits)
    double cols;

    //output
    double *u;          //pointer variable for output matrix u (encoded bits)

    //local
    double h1num;       //p solving matrix 1's number
    double slen;        //s length

    unsigned int h1loop;
    unsigned int uloop;
    unsigned char p;

    h1j = mxGetPr(prhs[0]);     //pointer to h1j
    s = mxGetPr(prhs[1]);       //pointer to s
    cols = mxGetScalar(prhs[2]);//value of cols

    h1num = mxGetN(prhs[0]);    //number of cols of h1j
    slen = mxGetN(prhs[1]);

    plhs[0] = mxCreateDoubleMatrix(1, cols, mxREAL); //matrix for output
    u = mxGetPr(plhs[0]);       //pointer to u

    for (uloop=0; uloop<slen; uloop++)
    {
        u[uloop] = s[uloop];
    }

    h1loop = 0;
    for (; uloop<cols; uloop++)
    {
        p = 0;
        while (h1j[h1loop]<=uloop)
        {
            p = p ^ (unsigned char)u[(unsigned int)h1j[h1loop] - 1];
            h1loop++;
        }
        u[uloop] = p;
        h1loop++;
    }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?