亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kernel_function.c

?? 一個很好的Matlab編制的數據降維處理軟件
?? C
字號:
#include "mex.h"#include "math.h"#include "string.h"void computeKernelRow(double* X, int n, int d, int index, const char* function, int param1, int param2, double* row);void computeColumnSums(double* X, int n, int d, const char* function, int param1, int param2, double* column_sums, double *total_sum);void centerKernelRow(double* row, int index, int n, double* column_sums, double *total_sum);void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {    // Initialize variables    int i, j, n, d;    double *v, *X, *column_sums, *total_sum, *row, *res;    bool center;    char *function, *type;    double param1, param2;        // Check and process inputs    if(nrhs < 2) {        mexErrMsgTxt("Not enough inputs.");    }    if(mxIsClass(prhs[0], "double")) {        v = (double*) mxGetPr(prhs[0]);    }    else {         mexErrMsgTxt("First input should be of type double.");    }    if(mxIsClass(prhs[1], "double")) {        X = (double*) mxGetPr(prhs[1]);    }    else {        mexErrMsgTxt("Second input should be of type double.");    }    if(nrhs < 3) {        center = true;    }    else {        if(mxIsClass(prhs[2], "logical")) {            center = *((bool*) mxGetPr(prhs[2]));        }        else if(mxIsClass(prhs[2], "uint8")) {            if (*((char*) mxGetPr(prhs[2])) == 0) center = false;            else center = true;        }        else if(mxIsClass(prhs[2], "double")) {            if (*((double*) mxGetPr(prhs[2])) == 0.0) center = false;            else center = true;        }        else {           mexErrMsgTxt("Third input should be of type logical, uint8, or double.");        }    }    if(nrhs < 4) {        function = "kernel";    }    else {        if(mxIsClass(prhs[3], "char")) {            function = (char*) mxGetPr(prhs[3]);        }        else {            mexErrMsgTxt("Fourth input should be of type char.");        }    }    if(nrhs < 5) {        param1 = 1.0;    }    else {        if(mxIsClass(prhs[4], "double")) {            param1 = *((double*) mxGetPr(prhs[4]));        }        else {            mexErrMsgTxt("Fifth input should be of type double.");        }    }    if(nrhs < 6) {        param2 = 3.0;    }    else {        if(mxIsClass(prhs[5], "double")) {            param2 = *((double*) mxGetPr(prhs[5]));        }        else {            mexErrMsgTxt("Fifth input should be of type double.");        }    }    if(nrhs < 7) {        type = "Normal";    }    else {        if(mxIsClass(prhs[6], "char")) {            type = (char*) mxGetPr(prhs[6]);        }        else {            mexErrMsgTxt("Sixth input should be of type char.");        }    }    if(mxGetN(prhs[1]) != mxGetM(prhs[0]) && mxGetM(prhs[0]) != 0) {        mexErrMsgTxt("Number of instances does not equal length of vector v.");    }            // Allocate some memory and set some variables    n = mxGetN(prhs[1]);    d = mxGetM(prhs[1]);    plhs[0] = mxCreateDoubleMatrix(1, n, mxREAL);    res = mxGetPr(plhs[0]);        // Compute column sums and total sum    if(center || strcmp(type, "C") == 0) {        column_sums = (double*) malloc(n * sizeof(double));        total_sum   = (double*) malloc(sizeof(double));        for(i = 0; i < n; i++) *(column_sums + i) = 0.0;        *total_sum = 0.0;        computeColumnSums(X, n, d, function, param1, param2, column_sums, total_sum);                // Return only the column sums if type set to "ColumnSums"        if(strcmp(type, "C") == 0) {            for(i = 0; i < n; i++) {                *(res + i) = *(column_sums + i);            }            free(column_sums);            free(total_sum);            return;        }    }        // Compute all rows and multiply by v    row = (double*) malloc(n * sizeof(double));    for(i = 0; i < n; i++) {                // Compute rows        computeKernelRow(X, n, d, i, function, param1, param2, row);        if(center) {            centerKernelRow(row, i, n, column_sums, total_sum);        }                // Multiply row by v        *(res + i) = 0.0;        for(j = 0; j < n; j++) {            *(res + i) += (*(row + j) * *(v + j));        }    }    mexPrintf(".");        // Clean up some memory    free(row);    if(center) {        free(column_sums);        free(total_sum);    }}/** *  * Computes a single row of the kernel matrix, viz. row index. * */void computeKernelRow(double* X, int n, int d, int index, const char* function, int param1, int param2, double* row) {    // Initialize variables    int i, j;        // Compute linear kernel    if(strcmp(function, "l") == 0) {        for(i = 0; i < n; i++) {            *(row + i) = 0.0;            for(j = 0; j < d; j++) {                *(row + i) += *(X + (index * d) + j) * *(X + (i * d) + j);            }        }            }        // Compute polynomial kernel    else if(strcmp(function, "p") == 0) {        for(i = 0; i < n; i++) {            *(row + i) = 0.0;            for(j = 0; j < d; j++) {                *(row + i) += *(X + (index * d) + j) * *(X + (i * d) + j);            }            *(row + i) = pow(*(row + i) + param1, param2);        }     }        // Compute Gaussian kernel    else if(strcmp(function, "g") == 0) {        for(i = 0; i < n; i++) {            *(row + i) = 0.0;            for(j = 0; j < d; j++) {                *(row + i) += pow(*(X + (index * d) + j) - *(X + (i * d) + j), 2);            }            *(row + i) = exp(-(*(row + i) / (2 * pow(param1, 2))));        }     }        // Unknown kernel function    else {        mexErrMsgTxt("Unknown kernel function.");    }}/** * * Compute all column sums and the total sum of a kernel matrix. * */void computeColumnSums(double* X, int n, int d, const char* function, int param1, int param2, double* column_sums, double* total_sum) {     // Initialize variables    int i, j;    double *row;        // Preallocate memory    row = (double*) malloc(n * sizeof(double));    for(i = 0; i < n; i++) *(row + i) = 0.0;    *total_sum = 0.0;        // Compute column sums and total sum    for(i = 0; i < n; i++) {                // Compute kernel row        computeKernelRow(X, n, d, i, function, param1, param2, row);                // Update sums        for(j = 0; j < n; j++) {            *(column_sums + j) += *(row + j);            *total_sum += *(row + j);        }    }    *total_sum = *total_sum / pow(n, 2);        // Clean up memory    free(row);}/** * * Centers a kernel row as computed by computeKernelRow() using precomputed sums (e.g., sums as given by computeColumnSums(...)). * */void centerKernelRow(double* row, int index, int n, double* column_sums, double* total_sum) {        // Initialize variables    int i;        // Update kernel row    for(i = 0; i < n; i++) {        *(row + i) = *(row + i) - (*(column_sums + i) / (double) n) - (*(column_sums + index) / (double) n) + *total_sum;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲动漫另类| 日韩视频一区在线观看| 国产精品一级在线| 日韩福利电影在线| 亚洲国产一区二区在线播放| 亚洲美女视频一区| 亚洲精品视频自拍| 亚洲精品欧美在线| 亚洲黄色av一区| 国产精品久久久久aaaa樱花| 亚洲欧洲日韩综合一区二区| 国产欧美va欧美不卡在线| 2024国产精品视频| 久久亚洲一级片| 久久久久国产一区二区三区四区| 日韩欧美综合在线| 日韩精品综合一本久道在线视频| 欧美日韩国产在线观看| 日韩午夜av一区| jlzzjlzz亚洲女人18| 亚洲成人av福利| 国产精品久久久久婷婷| 国产三级久久久| 国产在线一区观看| 2023国产一二三区日本精品2022| 一区二区三区四区精品在线视频| 亚洲人成伊人成综合网小说| 国产亚洲欧洲997久久综合| 日韩三级免费观看| 亚洲欧洲美洲综合色网| 久久99日本精品| 在线观看日韩电影| 播五月开心婷婷综合| 裸体一区二区三区| 亚洲大片精品永久免费| 国产农村妇女精品| 亚洲国产精品成人综合色在线婷婷 | 麻豆一区二区三| 午夜日韩在线电影| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久99在线观看| 国产不卡视频在线播放| 欧洲av一区二区嗯嗯嗯啊| 成人综合婷婷国产精品久久免费| 成人免费毛片片v| 精品一区二区三区在线观看国产| 首页综合国产亚洲丝袜| 美女视频免费一区| 日本欧美在线观看| 国产精品资源网| www.亚洲精品| av亚洲精华国产精华精| 91猫先生在线| 欧美自拍偷拍午夜视频| 成人久久视频在线观看| 不卡的av电影| 99国产精品久久久久| 欧美片网站yy| 91福利区一区二区三区| 欧美成人精品二区三区99精品| 国产亚洲精品精华液| 亚洲男人都懂的| 国产精品一区二区三区四区 | 91在线码无精品| 欧美mv日韩mv亚洲| 依依成人综合视频| 一区二区三区四区激情| 亚洲视频图片小说| 久久国产尿小便嘘嘘尿| 日本久久电影网| 精品欧美乱码久久久久久| 一区二区三区四区不卡视频| 国产老肥熟一区二区三区| 欧美精品乱码久久久久久| 亚洲欧洲成人av每日更新| 精品一区二区影视| 欧美欧美欧美欧美| 樱桃视频在线观看一区| 国产成人免费在线观看不卡| 91精品欧美福利在线观看| 一区二区三区不卡在线观看 | 喷白浆一区二区| 色综合天天综合网国产成人综合天| 精品人在线二区三区| 亚洲成人在线免费| 色偷偷88欧美精品久久久| 国产性做久久久久久| 九九**精品视频免费播放| 欧美精品第一页| 一区二区三区不卡视频在线观看| 成人免费毛片片v| 国产欧美一区二区在线观看| 国内精品伊人久久久久av影院 | 日韩欧美一级二级三级久久久| 亚洲制服欧美中文字幕中文字幕| 国产超碰在线一区| 久久久噜噜噜久久人人看| 九一九一国产精品| 日韩一级二级三级| 午夜电影一区二区三区| 欧美精品久久久久久久多人混战 | 久久99精品一区二区三区| 欧美日韩不卡一区二区| 亚洲高清免费观看| 欧美日韩一区高清| 亚洲国产日产av| 欧美日韩一级片在线观看| 一区二区三区四区乱视频| 欧美午夜在线一二页| 一区二区高清在线| 欧美视频一区二区| 亚洲成人激情自拍| 欧美三级日韩三级| 五月婷婷综合激情| 欧美高清精品3d| 蜜臀a∨国产成人精品| 日韩免费视频一区二区| 久久99国内精品| 久久久久久久久免费| 国产麻豆欧美日韩一区| 国产免费成人在线视频| 波多野结衣91| 亚洲免费观看高清完整版在线观看 | 亚洲男人电影天堂| 欧美综合天天夜夜久久| 亚洲高清免费观看 | 精品国产一区二区亚洲人成毛片| 青草av.久久免费一区| 欧美精品一区二区三区很污很色的 | 日本怡春院一区二区| 精品国产免费人成在线观看| 欧美在线一二三四区| 国产福利一区二区三区| 日韩欧美一区二区免费| 亚洲国产色一区| 欧美一区二区成人| 韩国av一区二区三区四区| 中文字幕va一区二区三区| 97精品视频在线观看自产线路二| 亚洲精品成人悠悠色影视| 欧美日本一道本| 国产一二精品视频| 亚洲欧美视频一区| 在线不卡一区二区| 国产精品亚洲综合一区在线观看| 亚洲日本成人在线观看| 欧美精品亚洲二区| 国产成人亚洲综合色影视| 亚洲欧美经典视频| 日韩一区二区三区在线视频| 成人精品在线视频观看| 婷婷国产v国产偷v亚洲高清| 久久久久97国产精华液好用吗| 99精品视频一区| 免费成人av在线| 亚洲桃色在线一区| 欧美大片顶级少妇| 91视视频在线直接观看在线看网页在线看 | 色婷婷综合久色| 麻豆免费精品视频| 欧美高清在线一区| 欧美日韩一二区| 国产99久久久精品| 五月天亚洲精品| 国产精品视频线看| 欧美一区中文字幕| 99麻豆久久久国产精品免费| 蜜臀国产一区二区三区在线播放| 中文字幕va一区二区三区| 67194成人在线观看| 99国内精品久久| 国产精品综合一区二区三区| 五月天激情综合| 亚洲欧洲日韩在线| 国产亚洲精久久久久久| 欧美日韩国产天堂| 99久久久无码国产精品| 久久99精品国产| 偷窥少妇高潮呻吟av久久免费| 国产精品无圣光一区二区| 日韩三级免费观看| 欧美日韩在线电影| 色丁香久综合在线久综合在线观看| 国产麻豆精品视频| 另类小说图片综合网| 亚洲精品国产品国语在线app| 久久久99精品免费观看不卡| 日韩小视频在线观看专区| 欧美天堂一区二区三区| 色域天天综合网| 成人av免费在线| 国产乱码精品一区二区三区av| 日韩成人一区二区| 亚洲成av人片在www色猫咪| 亚洲欧美日韩国产手机在线 | 国产精品欧美一级免费| 久久久久久97三级| 久久欧美一区二区| 精品国产一区二区三区四区四| 欧美一区二区在线看|