⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 v34trans.c

📁 数字通信第四版原书的例程
💻 C
📖 第 1 页 / 共 2 页
字号:
    sprintf(err_msg, "A = %d; ", A);    mexPrintf(err_msg);}#endif        /* B */        V_bef = 0;        R_bef = (int)z8[A];        V_now = 0;        R_now = R_bef;        while ((R[0] - R_now >= 0) & (A - V_now >= 0)) {            R_bef = R_now;            V_bef = V_now;            V_now = V_now + 1;;            R_now = (int)z8[A];            for (i = 0; i < V_now; i++) {                R_now = R_now + (int)(g4[i] * g4[A - i]);            }        }        if (A < V_now) {            R[1] = R[0] - R_bef;            B = V_bef;                    } else if (R[0] - R_now >= 0) {            R[1] = R[0] - R_now;            B = V_now;        } else {            R[1] = R[0] - R_bef;            B = V_bef;        }#ifdef MATLAB_MEX_FILEif (0) {    char    err_msg[256];    sprintf(err_msg, "B = %d; ", B);    mexPrintf(err_msg);}#endif        /* C */        R[2] = R[1] % (int)g4[B];        R[3] = (R[1] - R[2]) / (int)g4[B];        V_bef = 0;        R_bef = 0;        V_now = 0;        R_now = R_bef;        while ((R[2] - R_now >= 0) & (B - V_now >= 0)) {            R_bef = R_now;            V_bef = V_now;            V_now = V_now + 1;;            R_now = 0;            for (i = 0; i < V_now; i++) {                R_now = R_now + (int)(g2[i] * g2[B - i]);            }        }        if (B < V_now) {            R[4] = R[2] - R_bef;            C = V_bef;            		} else if (R[2] - R_now >= 0) {            R[4] = R[2] - R_now;            C = V_now;        } else {            R[4] = R[2] - R_bef;            C = V_bef;        }#ifdef MATLAB_MEX_FILEif (0) {    char    err_msg[256];    sprintf(err_msg, "C = %d; ", C);    mexPrintf(err_msg);}#endif		/* D */        V_bef = 0;        R_bef = 0;        V_now = 0;        R_now = R_bef;        while ((R[3] - R_now >= 0) & (A - B - V_now >= 0)) {            R_bef = R_now;            V_bef = V_now;            V_now = V_now + 1;            R_now = 0;            for (i = 0; i < V_now; i++) {                R_now = R_now + (int)(g2[i] * g2[A - B - i]);            }        }        if (A-B < V_now) {            R[5] = R[3] - R_bef;            D = V_bef;		} else if (R[3] - R_now >= 0) {            R[5] = R[3] - R_now;            D = V_now;        } else {            R[5] = R[3] - R_bef;            D = V_bef;        }#ifdef MATLAB_MEX_FILEif (0) {    char    err_msg[256];    sprintf(err_msg, "D = %d; ", D);    mexPrintf(err_msg);}		#endif		        /* E */        E = R[4] % (int)g2[C];        /* F */        F = (R[4] - E) / (int)g2[C];        /* G */        G = R[5] % (int)g2[D];        /* H */        H = (R[5] - G) / (int)g2[D];        /* calculate mijk[0-7] */        /* mi0k */        if (C < rate_M) {            mijk[0] = E;            mijk[1] = C - mijk[0];        } else {            mijk[1] = rate_M - 1 - E;            mijk[0] = C - mijk[1];        }        /* mi1k */        if ((B - C) < rate_M) {            mijk[2] = F;            mijk[3] = B - C - mijk[2];        } else {            mijk[3] = rate_M - 1 - F;            mijk[2] = B - C - mijk[3];        }        /* mi2k */                if (D < rate_M) {            mijk[4] = G;            mijk[5] = D - mijk[4];        } else {            mijk[5] = rate_M - 1 - G;            mijk[4] = D - mijk[5];        }        /* mi3k */        if ((A - B - D) < rate_M) {            mijk[6] = H;            mijk[7] = A - B - D - mijk[6];        } else {            mijk[7] = rate_M - 1 - H;            mijk[6] = A - B - D - mijk[7];        }#ifdef MATLAB_MEX_FILEif (0) {    char    err_msg[256];    sprintf(err_msg, "Caller\n");    mexPrintf(err_msg);        sprintf(err_msg, "A = %d; B = %d; C = %d; D = %d; E = %d; F = %d; G = %d; H = %d \n",A, B, C, D, E, F, G, H );    mexPrintf(err_msg);    sprintf(err_msg, "R[0]=%d; R[1]=%d; R[2]=%d; R[3]=%d; R[4]=%d; R[5]=%d \n",R[0],R[1],R[2],R[3],R[4],R[5]);    mexPrintf(err_msg);    sprintf(err_msg, "mijk[0]=%d; mijk[1]=%d; mijk[2]=%d; mijk[3]=%d; mijk[4]=%d; mijk[5]=%d; mijk[6]=%d; mijk[7]=%d \n",mijk[0],mijk[1],mijk[2],mijk[3],mijk[4],mijk[5],mijk[6],mijk[7]);    mexPrintf(err_msg);        }#endif        *last_updata = 1;        *out_count = 0;if (1) {    char    err_msg[256];    V_bef = 0;    for (i = 0; i < 8; i++) {        V_bef = mijk[i] > V_bef ? mijk[i] : V_bef;    }#ifdef MATLAB_MEX_FILE    if (V_bef > 11) {        sprintf(err_msg, "A=%d; B=%d; C=%d; D=%d; E=%d; F=%d; G=%d; H=%d \n", A, B, C, D, E, F, G, H );        mexPrintf(err_msg);        sprintf(err_msg, "R(0)=%d; R(1)=%d; R(2)=%d; R(3)=%d; R(4)=%d; R(5)=%d \n",R[0],R[1],R[2],R[3],R[4],R[5]);        mexPrintf(err_msg);                    for (i = 0; i < 8; i++) {            sprintf(err_msg, "mijk(%d)=%d; ", i, mijk[i]);            mexPrintf(err_msg);        }        sprintf(err_msg, "\n ");        mexPrintf(err_msg);    }#endif}            } else if (u[rate_b] <= 0) {        *last_updata = 0;    }    if ((u[rate_b+1] > 0) && (*last_output == 0)) {        if (*out_count < 8) {            long base_count, k, tmp, i;            k = *out_count % 2;            base_count = (*out_count / 2) * (3 + 2 * rate_q) + rate_K;                        tmp = base_count + 3 + k * rate_q;            for (i = 0; i < rate_q; i++) {                y[i] = data_scrm[tmp + i];            }            y[rate_q] = mijk[*out_count];            for (i = 0; i < 3; i++) {                y[i + rate_q + 1] = data_scrm[base_count + i];            }            y[rate_q + 4] = k;#ifdef MATLAB_MEX_FILEif (0) {    char    err_msg[256];    sprintf(err_msg, "Time=%f; y[0]=%f; base_count = %d;  \n", ssGetT(S), y[rate_q], *out_count );    mexPrintf(err_msg);}            #endif        }        /* at the very end */        *out_count = *out_count + 1;        *last_output = 1;    } else {        if (u[rate_b + 1] <= 0)           *last_output = 0;        if (ssGetT(S) == 0){            int i;            /* the initial condition before anything is out. */            for (i = 0; i < rate_q + 5; i++) {                y[i] = 0;            }        }    }}/* * mdlUpdate - computes the discrete states of the S-Function */static void mdlUpdate(x, u, S, tid)    double *x, *u;    SimStruct *S;    int tid;{}/* * mdlDerivatives - computes the derivatives of the S-Function */static void mdlDerivatives(dx, x, u, S, tid)    double *dx, *x, *u;    SimStruct *S;    int tid;{}/* * mdlTerminate - called at termination of model execution. */static void mdlTerminate(S)    SimStruct *S;{}#ifdef  MATLAB_MEX_FILE    /* Is this file being compiled as a MEX-file? */#include "simulink.c"      /* MEX-File interface mechanism */#else#include "cg_sfun.h"       /* Code generation registration function */#endif

⌨️ 快捷键说明

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