📄 mexchol.c
字号:
/************************************************************************* U = mexchol(X) X = U'*U * Computes upper-triangular Cholesky factor U of full symmetric positive* definite matrix X. ** Uses LAPACK routine DPOTRF************************************************************************/#include "mex.h"#include <math.h>/******************************************************************** PROCEDURE mexFunction - Entry for Matlab*********************************************************************/void mexFunction(const int nlhs, mxArray *plhs[], const int nrhs, const mxArray *prhs[]){ int n; double *x, *info; char *chn; int infotmp=0, j,k,jn; if(nrhs < 1) mexErrMsgTxt("mexchol: requires 1 input arguments."); if(nlhs > 1) mexErrMsgTxt("mexchol: requires 1 output argument."); x = mxGetPr(prhs[0]); if (mxIsSparse(prhs[0])) mexErrMsgTxt("Sparse X not supported by mexchol."); n = mxGetM(prhs[0]); if ( n != mxGetN(prhs[0]) ) mexErrMsgTxt("X should be square."); plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL); info = mxGetPr(plhs[0]); chn = "U"; dpotrf(chn, &n, x, &n, &infotmp); info[0] = (double)infotmp; /***** make lower triangular part of x zero *****/ for (j=0; j<n; j++) { jn = j*n; for (k=j+1; k<n; k++) { x[k+jn] = 0; } } return;}/************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -